當前位置:編程學習大全網 - 源碼下載 - PHP中的(偽)多線程與多進程?

PHP中的(偽)多線程與多進程?

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

PHP中也能多線程了,那麽問題也來了,那就是同步的問題。沙河電腦培訓知道PHP本身是不支持多線程的,所以更不會有什麽像Java中synchronize的方法了。那我們該如何做呢?

1.盡量不訪問同壹個資源。以避免沖突。但是可以同時像數據庫操作。因為數據庫是支持並發操作的。所以在多線程的PHP中不要向同壹個文件中寫入數據。如果必須要寫的話,用別的方法進行同步。如調用flock對文件進行加鎖等。或建立臨時文件,並在另外的線程中等待這個文件的消失while(file_exits('xxx'));這樣就等於這個臨時文件存在時,表示其實線程正在操作。如果沒有了這個文件,說明其它線程已經釋放了這個。

2.盡量不要從runThread在執行fputs後取這個socket中讀取數據。因為要實現多線程,需要的用非阻塞模式。即在像fgets這樣的函數時立即返回。。所以讀寫數據就會出問題。如果使用阻塞模式的話,程序就不算是多線程了。他要等上面的返回才執行下面的程序。所以如果需要交換數據最後利用外面文件或數據中完成。實在想要的話就用socket_set_nonblock($fp)來實現。

說了這麽多,倒底這個有沒有實際的意義呢?在什麽時候需要這種用這種方法呢?

答案是肯定的。大家知道。在壹個不斷讀取網絡資源的應用中,網絡的速度是瓶頸。如果采多這種形式就可以同時以多個線程對不同的頁面進行讀取。

  • 上一篇:Macdzigzag源代碼
  • 下一篇:163如何開通smtp
  • copyright 2024編程學習大全網