そんな方法ありません。
(ノ・・)ン。。。。。。(((●コロコロッ
↓スレッドではないけどマルチタスクを実現してみた。
PHPでお手軽マルチタスクってできないの?
PHPで悩ましいところが一つ。
リクエストを受け付けその処理が一瞬では終わらないものがあるとき。
例えばブログツールでPingを打つ時。
記事投稿をした後でPingサーバにPingを送信するわけだが、
サーバ数が多数ある場合は時間が異常にかかってしまう時がある。
それが全部完了するまでWebサイトは返信待ち状態になっていては問題だ。
ブラウザを閉じられたりするやも。
(AJAX使えばイイジャン!!ってのは論点がずれている)
そんな時に役立つのが
スレッド
スレッドとは?
マルチスレッドに対応したOS上での、ソフトウェアの実行単位。1つのプログラムは最低1つのスレッドを持つ。
同じプログラムに属するスレッドはメモリなどのリソースを共有する。複数のスレッドはCPUを交互に占有することによって見かけ上同時実行が可能。
一つのプロセス上で複数の処理を行うってことになるのかな。
先のブログツールだと見た目上は記事投稿が完了しているようになっているが、
内部ではPingを一生懸命打っていると言った感じにすることが出来る。
JavaはもちろんPerl,
Ruby,
Pythonではこのスレッドを利用することが出来る。
しかし、
PHPは非対応。(
mod_perl,
mod_rubyだとダメだと思うが。)
( ̄-  ̄ ) ナニカホウホウハ?
代替案が一つ。
スレッドと似て非なるものを使う。
それは
プロセス
[More:]
実行しているプログラム上で、
別のプロセスを起動し、
その別プロセス上で時間のかかる処理をさせると言うものだ。
PHPには
プロセス制御関数というのがある。
デフォルトではインストールされておらず、
利用できるのはCGI、CLI版のみ。
Windowでは利用できない。
など制限はかなり多い。
おそらくレンタルサーバには搭載されていないだろう。
(レンサバでも自前でコンパイルすればいいだけだが)
プロセスとは?
ソフトウェアの世界では、OSからメモリ領域などの割り当てを受けて処理を実行しているプログラムのことを言う。OSの機能の一部を実行するシステムプロセスと、ユーザの支持で実行されるユーザプロセスがある。プロセスは必要に応じて別のプロセスを起動することができ、起動した側のプロセスを親プロセス、された側のプロセスを子プロセスという。
実行中のプログラムから子プロセスを呼び出し、
ゴリゴリ系のプログラムを子プロセスに任せて自分は次の処理をする方法だ。
PEARや
PECLにマスクするものは見あたらなかったが、
PHPCLASSESにはあった
Daemon
http://www.phpclasses.org/browse/package/2197.html
(実はまだ試してないのは内緒。。。。)