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

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

PHP實現(xiàn)多線程的兩個方法

2019-11-02 15:51:50
字體:
供稿:網(wǎng)友

 PHP+shell實現(xiàn)多線程的方法

先寫個簡單的php代碼,這里為了讓腳本執(zhí)行時間更長,方便看效果,sleep一下,呵呵!先看下test.php的代碼:ls

PHP代碼:

<?php
for ($i=0;$i<10;$i++) {
  echo $i;
  sleep(10);
}
?>

在看下shell腳本的代碼,非常簡單

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
  /usr/bin/php -q /var/www/html/test.php &
done

注意到在請求php代碼的那行有一個&符號嗎,這個是關(guān)鍵,不加的話是不能進行多線程的,&表示講服務(wù)推送到后臺執(zhí)行,因此,在 shell的每次的循環(huán)中不必等php的代碼全部執(zhí)行完在請求下一個文件,而是同時進行的,這樣就實現(xiàn)了多線程,下面運行下shell看下效果,這里你將 看到10個test.php進程再跑,再利用linux的定時器,定時請求這個shell,在處理一些需要多線程的任務(wù),例如,批量下載時,非常好用!

 

php中用WEB服務(wù)器實現(xiàn)多線程

假設(shè)我們現(xiàn)在運行的是a.php這個文件. 但是我在程序中又請求WEB服務(wù)器運行另一個b.php,那么這兩個文件將是同時執(zhí)行的.(PS: 一個鏈接請求發(fā)送之后, WEB服務(wù)器就會執(zhí)行它, 而不管客戶端是否已經(jīng)退出)

有些時候, 我們想運行的不是另一個文件, 而是本文件中的一部分代碼.該怎么辦呢?
其實可是通過參數(shù)來控制a.php來運行哪一段程序.

下面看一個例子:

//a.php,b.php

PHP代碼:--------------------------------------------------------------------------------

<?php
    function runThread()
    {
        $fp = fsockopen('localhost', 80, $errno, $errmsg);
        
        fputs($fp, "GET /b.php?act=brnrn");        //這里的第二個參數(shù)是HTTP協(xié)議中規(guī)定的請求頭
                                //不明白的請看RFC中的定義
        
        fclose($fp);
    }
 
    function a()
    {
        $fp = fopen('result_a.log', 'w');
        fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
        
        fclose($fp);        
    }
 
    function b()
    {
        $fp = fopen('result_b.log', 'w');
        fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
        
        fclose($fp);        
    }
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丰原市| 绥芬河市| 石楼县| 北宁市| 新绛县| 涟水县| 河东区| 宕昌县| 盘山县| 弋阳县| 连平县| 盘锦市| 页游| 库车县| 阳泉市| 乌海市| 渭源县| 温州市| 遵化市| 界首市| 潮安县| 宁国市| 隆安县| 靖远县| 湟中县| 启东市| 海南省| 道孚县| 朝阳市| 池州市| 长宁区| 大同县| 焉耆| 泾川县| 上思县| 确山县| 海城市| 大庆市| 伊宁市| 阜平县| 晋州市|