ホームページ  >  記事  >  バックエンド開発  >  Gearman を使用した非同期メールまたは SMS 送信操作のための PHP の詳細な説明

Gearman を使用した非同期メールまたは SMS 送信操作のための PHP の詳細な説明

coldplay.xixi
coldplay.xixi転載
2020-07-10 17:12:322257ブラウズ

Gearman を使用した非同期メールまたは SMS 送信操作のための PHP の詳細な説明

この記事の例では、Gearman を使用して非同期電子メールまたは SMS 送信操作を実行する PHP について説明します。詳細は次のとおりです:

1. 準備作業

1. 業務処理中のダウンタイムを防ぐために、gearman の設定を行ってください。永続化メソッド。
2. テストを容易にするために、gearmanManager を使用してワーカー スクリプトを管理します。

#関連する学習の推奨事項:

PHP プログラミングの入門から熟練度まで

# 2. テスト スクリプトの作成

sendEmail.php

コードは次のとおりです: <pre class="brush:php;toolbar:false;">&lt;?php //注意函数名与文件名相同 function sendEmail($job) { $workId = uniqid(); //workload()获取客户端发送来的序列化数据 $data = json_decode($job-&gt;workload(), true); //这里模拟处理过程 //具体的业务,这里应该是请求发送邮件的接口,这里只做演示 sleep(1); echo &quot;workId: {$workId} 发送 {$data[&amp;#39;email&amp;#39;]} 成功\n&quot;; }</pre>

client.php

コードは次のとおりです: <pre class="brush:php;toolbar:false;">&lt;?php //创建一个客户端 $client = new GearmanClient(); //添加一个job服务 $client-&gt;addServer(&amp;#39;127.0.0.1&amp;#39;, 4730); $cnt = 5000; $ret = array(); //循环发送5000条邮件 for($i = 0; $i &lt; $cnt; ++$i) { //doBackground异步,返回提交任务的句柄 $ret[$i] = $client-&gt;doBackground(&amp;#39;sendEmail&amp;#39;, json_encode(array( &amp;#39;email&amp;#39; =&gt; &quot;{$i}@qq.com&quot;, &amp;#39;title&amp;#39; =&gt; &quot;邮件标题{$i}&quot;, &amp;#39;body&amp;#39; =&gt; &quot;我是内容{$i}&quot;, ))); }</pre>

3. gearmanManager の構成情報を変更します

私の gearmanManager は /data/GearmanManager/

> vi /data/GearmanManager/etc/GearmanManager.ini

にインストールされています。次の情報を追加します。sendEmail の 5 つのプロセスを開始します

[sendEmail]
;指定5个进程
dedicated_count=5
;5个进程都只做sendEmail工作
dedicated_only=1

4. gearman を起動します

> gearmand -d -q mysql \
--mysql-host=192.168.1.100 \
--mysql-port=3306 \
--mysql-user=gearman \
--mysql-password=123456 \
--mysql-db=gearman \
--mysql-table=gearman_queue &

5. gearmanManager を起動します

> cd /data/GearmanManager
> ./bin/pecl_manager.php -c /data/GearmanManager/etc/GearmanManager.ini -vvv

#6. クライアントを実行します。 php

> /data/php56/bin/php /data/client.php

pecl_manager.php で ctrl c を実行してワーカーを強制的に閉じると、client.php は通常どおりリクエストを送信できますが、データは次の場所に保存されます。 mysql。

ワーカーを再起動すると、gearman は未処理のワーカーを処理のために再ロードします。


mysql はホスト マシンにインストールされており、gearman は仮想マシンにインストールされています。gearman が mysql に接続できないことに気付いた友人は、一時的に win10 ファイアウォールをオフにして、 win10のping応答を有効にする。

以上がGearman を使用した非同期メールまたは SMS 送信操作のための PHP の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。