Re: [請益] multithread
※ 引述《ojinjin (小歐)》之銘言:
: ※ 引述《clifflu (缺錢啦 @@)》之銘言:
: : 2. 如果 httpd 是使用 apache 的話, 每一個 request 是來自一個 thread (吧 XD)
: : 3. php 能夠以 pcntl_fork 的方式產生 process.
: : 4. 你也可以透過 execution 的方式, 產生子 process.
: : 你也可以決定母 process (.php) 要不要等子 process 跑完.
: : 如果你有某些演算法, 需要多個 thread 來增進效能的話,
: : 建議用其他語言在 server side 寫出程式由 php 呼叫,
: : 另寫一頁面用以取得執行結果, 會比較適合. (尚未完成時顯示執行進度是個好主意)
: 感謝您的回覆 :)
: 我的狀況是假設在網頁上,
^^^^^^
: 使用者執行了一個需要花數天執行的功能,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
既然如此, #3 跟本不會是個好主意.
: 而使用者不需要去等待它完成,
: 一開始我只想到 4. 那個做法,
: 但是又想能不能全部都利用 php 來完成 :P
可以. php 預設會產生執行檔 (提供作為 script / CGI 之用)
windows 預設應該會是 %PHP%\PHP.exe .
若是要執行檔案, 可以當作 argv 傳進去, 例如
%PHP%\php.exe c:\www\some-dir\tmp.php
: 環境:windows, apache2, php5
: 3. 似乎不行
: It is not possible to use the function 'pcntl_fork' when PHP is used as Apache
: module. You can only use pcntl_fork in CGI mode or from command-line.
用上面的方法呼叫一隻 cmd-line php,
再把那隻 php fork 出另一隻即可.
output ? 如我前面所寫, 弄個頁面去讀檔案, 檔案內容由實際在跑的那隻程式產生,
(是否透過 template engine 或類似的邏輯就隨你了) 在完成後顯示結果, 否則為
進度即可.
我還是不認為把需要運算數日的東西用 php 寫是個好主意,
又或者, 也許是因為你用 php 寫才需要跑這麼久的 XD
--
鬼壓床怎麼辦
騎上去啊
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.217.134
→
10/25 20:30, , 1F
10/25 20:30, 1F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章