看板 PHP 關於我們 聯絡資訊
※ 引述《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
clifflu:同樣, 你可能會需要用到 flock 等函式 請自己念 manual 吧 10/25 20:30