[PHP-users 28596] 非同期処理について

utsunomiya kanryu @ aurora.dti.ne.jp
2006年 3月 1日 (水) 17:39:06 JST


はじめまして。宇都宮と申します。

Apache上のphpスクリプトから大量のメールを配信する際、
直接送信処理を行うとタイムアウトしてしまいますので、
送信処理をpipe等を使って非同期化しようとしています。

記述例:(sender.phpの動作に時間がかかります)
   $sender_exec = popen("php sender.php >/dev/null ", 'w');
   fputs($sender_exec, $maildata);
   $result = pclose($sender_exec);



この書き方では、残念ながらpclose()のところで
子プロセスの終了まで待機してしまうようです。

かといって
   $sender_exec = popen("php sender.php >/dev/null &", 'w');
という形に記述するとパイプの標準入力へ書き込めないようです。

なお、セキュリティー上の問題から$maildataにあたるデータを
ファイル/DBに書き出すことはできません。
(この理由でPear::Mail::Queueは使用できません)

ご存知の方がいらっしゃいましたら、
ご教示いただけますと大変助かります。


PHP-users メーリングリストの案内