[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 メーリングリストの案内