国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php基于Socket實現多線程開發教程

2024-05-04 21:49:48
字體:
來源:轉載
供稿:網友

由于php本身不支持多線程,如果我們想在php實現多線程是不是不可行呢?本教程來講講通過php的Socket方式實現php程序的多線程.

通過php的Socket方式實現php程序的多線程,php本身是不支持多線程的,那么如何在php中實現多線程呢?可以想一下,WEB服務器本身都是支持多線程的,每一個訪問者,當訪問WEB頁面的時候,都將調用新的線程,通過這一點我們可以利用WEB服務器自身的線程來解決PHP不支持多線程的問題.

下面給出通過 fsockopen() 建立socket連接,然后用 用fputs() 發送消息,來實現的PHP多線程類代碼:

  1. $fp=fsockopen($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5);  
  2. if(!$fp){ 
  3. echo "$errstr ($errno)<br />n"
  4. fputs($fp,"GET $_SERVER[PHP_SELF]?flag=1rn");  
  5. fclose($fp); 

上面這段代碼只是一個線程的操作過程,多進行幾個這樣的操作就是多線程了,目前所謂PHP的多線程程序都是基于這個方式的.

下面給一個完整的線程類代碼:

  1. <?php  
  2. /**  
  3. @title:PHP多線程類(Thread)  
  4. @version:1.0  Vevb.com 
  5. @author:axgle <axgle@126.com>  
  6. */  
  7. class thread {  
  8. var $count;  
  9. function thread($count=1) {  
  10.  
  11. $this->count=$count;  
  12. }  
  13.  
  14. function _submit() {  
  15. for($i=1;$i<=$this->count;$i++) $this->_thread();  
  16. return true;  
  17. }  
  18.  
  19.  
  20. function _thread() {  
  21. $fp=fsockopen($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5);  
  22.  
  23. if(!$fp){ 
  24. echo "$errstr ($errno)<br />n"
  25. fputs($fp,"GET $_SERVER[PHP_SELF]?flag=1rn");  
  26. fclose($fp);  
  27. }  
  28.  
  29. function exec($func) {  
  30. isset($_GET['flag'])?call_user_func($func):$this->_submit();  
  31. }  
  32.  
  33.  
  34. }  
  35.  
  36. //應用例子: 
  37. $th=new thread(10);//10個線程  
  38. $th->exec('demo');//執行行自定義的函數  
  39.  
  40. function demo() {  
  41. fopen('data/'.microtime(),'w');  
  42. }
  43. ?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南召县| 遂溪县| 长海县| 北川| 襄汾县| 儋州市| 余姚市| 通辽市| 眉山市| 洛宁县| 杭锦旗| 麻阳| 德惠市| 阳春市| 孟州市| 宜春市| 鸡西市| 平遥县| 漳平市| 广河县| 嘉鱼县| 密山市| 尤溪县| 新郑市| 平舆县| 南郑县| 东山县| 巴林左旗| 酉阳| 开阳县| 洛扎县| 兴隆县| 武邑县| 龙游县| 辛集市| 兰溪市| 徐汇区| 宁都县| 萨嘎县| 韶山市| 临沂市|