當前位置:編程學習大全網 - 源碼下載 - 怎樣使用workerman實現定時任務

怎樣使用workerman實現定時任務

mail_worker.php

<?php

use Workerman\Worker;

require_once './Workerman/Autoloader.php';

// mail worker,和調用端使用Text協議通訊

$mail_worker = new Worker('Text://0.0.0.0:12345');

// 如果發送郵件很慢,mail進程數可以根據需要多開壹些

$mail_worker->count = 80;

$mail_worker->name = 'MailWorker';

$mail_worker->onMessage = function($connection, $mail_data)

{

// 直接返回ok,避免調用端長時間等待

$connection->send('ok');

// 假設發來的是json數據

$mail_data = json_decode($mail_data, true);

// 根據mail_data發郵件,如果需要失敗重發,

// 可以把失敗的郵件任務放到mysql裏面,

// 做個定時器定時掃描失敗郵件重新發送

your_send_mail_func($mail_data);

};

if(!defined('GLOBAL_START'))

{

Worker::runAll();

}

在妳的項目中這樣與mail_worker通訊發郵件。

//$ip = "mail_worker 的ip" ,本機的話為127.0.0.1

$socket = stream_socket_client("tcp://$ip:12345", $errno, $errmsg, 5);

if(!$socket) echo $errmsg;

$mail_data = array("from"=>"...", "to"=>"...", "content"=>"...");

// 註意,Text協議後面"\n"換行符是必須的

$mail_buffer = json_encode($mail_data)."\n";

// 發送給mail worker

fwrite($socket, $mail_buffer);

這樣就可以異步發郵件了,防止主流程被發郵件阻塞,大大加快下單響應時間。

其實下單後能夠在網站上實時通知也是個不錯的體驗,用戶這邊下單後,商家在網站上立刻得到通知,效果圖類似

接入非常簡單

  • 上一篇:網站加密和解密源代碼
  • 下一篇:急求《單片機C語言程序設計實訓100例——基於8051+Proteus仿真》第三部分綜合設計C語言源代碼
  • copyright 2024編程學習大全網