国产探花免费观看_亚洲丰满少妇自慰呻吟_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. ?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保靖县| 宜阳县| 蒲城县| 阿坝| 上蔡县| 岳普湖县| 德安县| 平塘县| 宝鸡市| 赤水市| 东兰县| 肥西县| 襄城县| 蚌埠市| 崇州市| 贵港市| 广德县| 乌什县| 莱西市| 杂多县| 兴城市| 新龙县| 兴和县| 马关县| 琼结县| 沧源| 张家川| 灵台县| 中卫市| 双牌县| 顺昌县| 庐江县| 柳江县| 义乌市| 视频| 长汀县| 太湖县| 雅江县| 秭归县| 荣昌县| 巴中市|