PHPでスレッドを使う方法?

PHP

08:40:30, by admin Email , 37 words, 10673 views   Japanese (JP)

del.icio.us
そんな方法ありません。

(ノ・・)ン。。。。。。(((●コロコロッ

↓スレッドではないけどマルチタスクを実現してみた。
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の機能の一部を実行するシステムプロセスと、ユーザの支持で実行されるユーザプロセスがある。プロセスは必要に応じて別のプロセスを起動することができ、起動した側のプロセスを親プロセス、された側のプロセスを子プロセスという。


実行中のプログラムから子プロセスを呼び出し、
ゴリゴリ系のプログラムを子プロセスに任せて自分は次の処理をする方法だ。
PEARPECLにマスクするものは見あたらなかったが、
PHPCLASSESにはあった
Daemon
http://www.phpclasses.org/browse/package/2197.html









(実はまだ試してないのは内緒。。。。)

Trackback address for this post:

http://hain.jp/htsrv/trackback.php/66

Comments, Trackbacks:

No Comments/Trackbacks for this post yet...

Leave a comment:

Your email address will not be displayed on this site.
Your URL will be displayed.

Allowed XHTML tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
(Line breaks become <br />)
(Set cookies for name, email and url)
(Allow users to contact you through a message form (your email will NOT be displayed.))
This is a captcha-picture. It is used to prevent mass-access by robots.

Please enter the characters from the image above. (case insensitive)

powered by b2evolution

shinobi

Neighbors
Relative
Favorites

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!