當前位置:商標查詢大全網 - 培訓招生 - PHP中的多線程和多進程

PHP中的多線程和多進程

利用WEB服務器本身的多線程來處理,從WEB服務器多次調用我們需要實現多線程的程序。?

PHP也可以多線程,那麽問題來了,那就是同步的問題。長平電腦培訓知道PHP本身不支持多線程,所以不會有Java那樣的synchronize方法。那麽我們該怎麽辦呢?

1.盡量不要訪問同壹個資源。為了避免沖突。但是它可以同時像數據庫壹樣運行。因為數據庫支持並發操作。所以不要在多線程PHP中把數據寫到同壹個文件。如果壹定要寫,就用其他方法同步。比如調用flock鎖定文件。或者創建壹個臨時文件,在另壹個線程while(file_exits('xxx '))中等待這個文件的消失;這意味著當這個臨時文件存在時,就意味著線程實際上正在運行。如果這個文件丟失了,就意味著其他線程已經釋放了它。

2.盡量不要從runThread在執行fputs後獲取的這個套接字中讀取數據。因為要實現多線程,就必須使用非阻塞模式。也就是說,當使用類似fgets的函數時,它會立即返回。。所以讀寫數據會出問題。如果使用阻塞模式,程序就不是多線程的。在執行下面的過程之前,他必須等待上面的返回。所以如果需要交換數據,最終可以使用外部文件或者數據來完成。如果真的想要,就用socket_set_nonblock($fp)來實現。

說了這麽多,這裏面有什麽實際意義嗎?什麽時候需要這種方法?

答案是肯定的。眾所周知。在壹個不斷讀取網絡資源的應用中,網速是瓶頸。如果采用這種形式,不同的頁面可以被多個線程同時讀取。