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