[PHP-users 28600] Re: 非同期処理について
nomoto
shin-1 @ ca2.so-net.ne.jp
2006年 3月 1日 (水) 22:45:38 JST
nomotoです。
パイプで処理すると渡すだけ渡してプロセスを切り離すと
いうような事はできないのではないでしょうか。
Perl CGIなどで同様の事をしたい場合は、自分自身をforkして
もうひとつ子プロセスを作り、呼び出した親プロセス側は
ブラウザに対してすぐにレスポンスを返して終了し、子プロセス
側でデータベースを読んだりメールを送ったりする時間の掛かる
処理を長時間実行するといった方法をとります。
PHPでもプロセス制御関数でpcntl_forkというのがあるよう
なので、同じような事ができるのではないでしょうか?
>Apache上のphpスクリプトから大量のメールを配信する際、
>直接送信処理を行うとタイムアウトしてしまいますので、
>送信処理をpipe等を使って非同期化しようとしています。
>
>記述例:(sender.phpの動作に時間がかかります)
> $sender_exec = popen("php sender.php >/dev/null ", 'w');
> fputs($sender_exec, $maildata);
> $result = pclose($sender_exec);
●--------------------------------------------
野元真一 nomoto @ neobit.jp http://neobit.jp
TEL:03-5342-3622 FAX:03-5342-3623
--------------------------------------------●
PHP-users メーリングリストの案内