我們首先來看一個示例
?phphtml' target='_blank'>class execMulti { function MultithreadTest { exec( php static_massive.php /dev/null echo 處理完成了 ?
當執行上述操作時,即使在耗時的處理結束之前也顯示處理完成。
exec( php static_massive.php /dev/null
由于“ / dev / null& ”返回的值丟失,我們不會等待響應。
因此,處理完成指示比耗時處理更快。
但是,該方法不知道耗時的處理何時結束。
不要忘記考慮采取日志的執行,登錄DB等方法向用戶傳遞執行結果。
用于多線程的方法(pthreads)
最后,介紹使用PHP擴展模塊pthreads的方法。
它可以比上面使用exec的方法更簡單。
①配置環境并安裝php
請使用vagrant等準備喜歡的環境。
php 需要使用線程安全版本,這是多線程和安全的實現。
從官方下載線程安全版本的 PHP。
訪問以下內容并從圖中的紅框下載。
http://www.php.net/downloads.php
此外,對于線程安全安裝,您需要使用configure選項指定-enable-maintainer-zts。
./configure --enable-maintainer-zts
根據需要,也可以安上Apache和mysql的選項。
用以下命令確認了php的版本就可以了。
php -v
②pthreads的安裝
我們來下載zip格式。
http://github.com/krakjoe/pthreads/archive/master.zip
解壓zip,移動到解壓縮文件,然后執行phpize。
如果您在PHP模塊列表上運行pthreads,則可以執行以下操作。
php -m
根據環境的不同,這一塊的設定也會有所不同,可以用環境名+pthreads等進行檢索來尋找信息。
③嘗試使用多線程
示例如下
?phpclass pthreadsTest extends Thread { public function run () { sleep(5);$ts1 = new pthreadsTest();$ts1- start(); $ts2 = new pthreadsTest();$ts2- start(); ?
因為sleep(5)被調用兩次,所以需要10秒,但實際上它將是5秒。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答