2011-08-05 18 views
0

一連のPHPスクリプトを実行し、キュー内のタスクを処理する必要があります。 PHP CliやPHP/Apacheから実行すると、タスクは最大10分かかります。スクリプトのインスタンスが複数存在する可能性があります。これは繰り返し発生する必要があります。 PHP/Apacheはユーザーとのやりとりがなく、バックエンドの/ usr/bin/curlプログラムと対話します。長時間実行するタスクのためのPHP CLIまたはPHP over Apache

私は、PHP-Cliがスクリプトが実行されるたびにPHPインタープリタとそのすべてのモジュールをロードする必要があることを知っています。一方、PHP/Apacheでは以前に読み込まれているので、PHP/Apacheは少し速く、メモリ消費量は少なくなります(SOの他の投稿と同様)。

これらのスクリプトは、PHPのCLIまたはApacheバックグラウンド処理のためだけにシステムにインストールされていますか?だから、技術的に

# php processtask.php --taskId=1 & 
# php processtask.php --taskId=2 & 

VS

# /usr/bin/curl http://localhost/processtask.php?taskId=1 & 
# /usr/bin/curl http://localhost/processtask.php?taskId=2 & 

ロードする場合、各時間カールは、より多くのリソース使用率を引き起こす可能性があり、私は別のスレッドで同じことを行うためにカールライブラリをループし、使用するスクリプトのような他のデーモンを使用することができます(これはおそらくPHPではありません)

答えて

1

オフラインPHPスクリプトを実行する以外の理由でApacheをインストール、設定、および維持するのは愚かだと思います。間違っている可能性がある余分な要件とビットをすべて考慮してください。それを簡単に保ち、CLIを使用してください。

編集:誰かがプロセスを起動できないようにしたいので、Apacheを実行する場合は、セキュリティレイヤーを追加する必要があります。

2

私はPHPを使用しています。CLIベースのスクリプトを実行して、さまざまなキューを介して1日に100万件を超えるアイテムを実行しています(場合によってはその倍数を実行します)。 Webサーバーを経由する古いシステムもあります。そのために余分なオーバーヘッドが発生すると、大量のタスクを実行しようとすると非常に制限されます。

また、Webベースのジョブでは、タイムアウトを避けるために追加の作業が必要になります。コマンドラインから実行するか、シェルスクリプトやCRONで起動するのが最も良い方法です。

+0

CLIで実行する方が速いのですか?サービスとして実行するように設定する方法はありますか? –

関連する問題