私はzendを使用してWebアプリケーションを作成しています。ここでは、ユーザーAが複数のユーザーにメールを送信できるインターフェースを作成しています。これは優れた動作をしますが、ユーザーAが待機する時間が長すぎるため、実行時間が遅くなります「確認応答」(メールの送信後に表示されます。)
Javaには、そのタスクを実行(メールを送信)できる「スレッド」があり、残りのアプリケーションの速度を低下させません。
Javaのように、PHP/Zendでテクニックを使用して、タスクの分割を行うことができます。たとえば、電子メールの送信など、かなりの時間がかかる可能性があります。
編集(@Efazatiに感謝、この方向に新しい開発があるようです)
http://php.net/manual/en/book.pthreads.php
注意:(下部の ここ から):
pthreadsは、非常に良い結果をもたらす実験でした。その制限や機能はいつでも変更される可能性があります。 [...]
/編集
PHPにはスレッドはありません。
回避策は、ジョブをキューに保存し(たとえば、電子メールを含むテーブルの行)、cronjobに指定された間隔でphpスクリプトを呼び出します( 2分と言います)、ジョブをポーリングします。ジョブが存在する場合、いくつかを取得し(phpのインストールタイムアウトに応じて)、メールを送信します。
実行を延期する主なアイデア:
落とし穴:
fork のように、複数のプロセスを使用することを検討できます。それらの間の通信はスレッドの場合ほど単純ではありません(しかし、その場合、すべての落とし穴が付属するわけではありません)が、電子メールを送信するだけの場合は、あまり通信する必要はないかもしれません。すべて。
Apacheプロセスでフォークを行うことに注意してください。予期しない動作が発生する可能性があります。なんらかの非同期実行を行う場合は、なんらかのキューイングメカニズムを使用する必要があります。 Gearmanは1つです。 Zend Serverのジョブキューもその1つです。 キューに入れますか?Zend Serverジョブキューの概要 にデモコードがあります。 cronを使用できますが、cronスケジューラーに依存してタスクを実行するという問題がありますが、非同期コンピューティングはすぐに実行する必要があることがよくあります。キューシステムを使用すると、スレッド化せずにそれを行うことができます。
https://github.com/krakjoe/pthreads で有望に見えるPThreadsに基づいて開発されているスレッディング拡張機能があります
pcntl があり、サブプロセスを作成できますが、phpはこの種のアーキテクチャではうまく機能しません。おそらく、実行時間の長いスクリプト(デーモン)を作成し、それらを複数生成するほうがよいでしょう。
PHPには、スレッドの一部が言語の一部として含まれていません。スレッドをエミュレートできるいくつかのメソッドがありますが、それらは確実ではありません。
このGoogle検索 は、いくつかの潜在的な回避策を示しています
PHPの時点ではスレッドはありません。ただし、phpの場合は、このラウンドアバウトの方法を見ることができます http://www.alternateinterior.com/2007/05/ multi-threading-strategies-in-php.html
メールの送信にキューシステムを使用し、スレッドをサポートする別のシステムからメールを送信することができます。 PHPは単なるツールであり、ジョブに最適なツールを使用する必要があります。