php多任務(wù)程序?qū)嵗馕?/h1>
更新時(shí)間:2014年07月19日 17:14:10 投稿:shichen2014
這篇文章主要介紹了php多任務(wù)程序?qū)嵗?需要的朋友可以參考下
本文以實(shí)例簡(jiǎn)單解析了php多任務(wù)程序的實(shí)現(xiàn)方法,具體代碼如下:
<?php
error_reporting(E_ALL);
set_time_limit(0);
/**
* php多任務(wù)程序的實(shí)現(xiàn)
* 借助proc_open
* 其實(shí)該叫進(jìn)程(process)
* 能啟動(dòng)多進(jìn)程,你可以使用你的想象力做你想做的了,以后再寫(xiě)個(gè)能用的
* 如果你是在linux上跑php,并且啟用pcntl模塊后,使用pcntl函數(shù)該更好
*
*/
class Thread {
protected $_pref; // process reference
protected static $_instance = null;
protected $_pipes;
private function __construct() {
$this->_pref = 0;
}
public static function getInstance($file) {
if (null == self::$_instance) {
self::$_instance = new self;
}
$descriptor = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "./error-output.txt", "a"),
);
self::$_instance->_pref = proc_open("php -q $file", $descriptor, self::$_instance->_pipes);
return true;
}
public function __destruct() {
proc_close($this->_pref);
$this->_pref = null;
}
}
// 測(cè)試代碼
$file = __FILE__;
if(empty($argv[1])) {
$t2 = Thread::getInstance("$file 1");
$t3 = Thread::getInstance("$file 2");
$t4 = Thread::getInstance("$file 3");
$t5 = Thread::getInstance("$file 4");
$t5 = Thread::getInstance("$file 5");
$t5 = Thread::getInstance("$file 6");
$t2 = Thread::getInstance("$file 7");
$t3 = Thread::getInstance("$file 8");
$t4 = Thread::getInstance("$file 9");
$t5 = Thread::getInstance("$file 10");
$t5 = Thread::getInstance("$file 11");
$t5 = Thread::getInstance("$file 12");
echo "Main thread done\n";
} else {
$somecontent = "\r\n//~~~~~~~~~~~~-這次請(qǐng)求序號(hào)是:" . $argv[1];
sleep(mt_rand(0, 3));
$handle = fopen($file, 'a+');
fwrite($handle, $somecontent);
}
相關(guān)文章
-
PHP遞歸遍歷指定目錄的文件并統(tǒng)計(jì)文件數(shù)量的方法
這篇文章主要介紹了PHP遞歸遍歷指定目錄的文件并統(tǒng)計(jì)文件數(shù)量的方法,涉及php文件及目錄操作的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下 2015-03-03
-
非集成環(huán)境的php運(yùn)行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程
這篇文章主要介紹了非集成環(huán)境的php運(yùn)行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程,感興趣的小伙伴們可以參考一下 2016-04-04
-
PHP7中對(duì)十六進(jìn)制字符串處理的問(wèn)題詳解
在本篇文章里小編給大家整理的是一篇關(guān)于PHP7中對(duì)十六進(jìn)制字符串處理的問(wèn)題詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。 2021-11-11
-
PHP面向?qū)ο蠓治鲈O(shè)計(jì)的經(jīng)驗(yàn)原則
你不必嚴(yán)格遵守這些原則,違背它們也不會(huì)被處以宗教刑罰。但你應(yīng)當(dāng)把這些原則看成警鈴,若違背了其中的一條,那么警鈴就會(huì)響起 。 ----- Arthur J.Riel 2008-09-09
-
php進(jìn)行支付寶開(kāi)發(fā)中return_url和notify_url的區(qū)別分析
這篇文章主要介紹了php進(jìn)行支付寶開(kāi)發(fā)中return_url和notify_url的區(qū)別,較為詳細(xì)的分析了return_url和notify_url的區(qū)別與用法,需要的朋友可以參考下 2014-12-12
-
PHP對(duì)表單提交特殊字符的過(guò)濾和處理方法匯總
本篇文章主要是對(duì)PHP對(duì)表單提交特殊字符的過(guò)濾和處理方法進(jìn)行了總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助 2014-02-02
-
PHP 實(shí)現(xiàn)判斷用戶是否手機(jī)訪問(wèn)
這篇文章主要介紹了PHP 實(shí)現(xiàn)判斷用戶是否手機(jī)訪問(wèn)的方法,十分實(shí)用的功能,推薦給有需要的小伙伴。 2015-01-01
-
php在window iis的莫名問(wèn)題的測(cè)試方法
其實(shí)很簡(jiǎn)單,就一句話,見(jiàn)招拆招,通過(guò)c:\php\php.exe -i 命令實(shí)現(xiàn)
2013-05-05
-
PHP實(shí)現(xiàn)數(shù)組array轉(zhuǎn)換成xml的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)數(shù)組array轉(zhuǎn)換成xml的方法,涉及php針對(duì)數(shù)組的遍歷及xml格式文件的構(gòu)造技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下 2016-07-07
最新評(píng)論
本文以實(shí)例簡(jiǎn)單解析了php多任務(wù)程序的實(shí)現(xiàn)方法,具體代碼如下:
<?php error_reporting(E_ALL); set_time_limit(0); /** * php多任務(wù)程序的實(shí)現(xiàn) * 借助proc_open * 其實(shí)該叫進(jìn)程(process) * 能啟動(dòng)多進(jìn)程,你可以使用你的想象力做你想做的了,以后再寫(xiě)個(gè)能用的 * 如果你是在linux上跑php,并且啟用pcntl模塊后,使用pcntl函數(shù)該更好 * */ class Thread { protected $_pref; // process reference protected static $_instance = null; protected $_pipes; private function __construct() { $this->_pref = 0; } public static function getInstance($file) { if (null == self::$_instance) { self::$_instance = new self; } $descriptor = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("file", "./error-output.txt", "a"), ); self::$_instance->_pref = proc_open("php -q $file", $descriptor, self::$_instance->_pipes); return true; } public function __destruct() { proc_close($this->_pref); $this->_pref = null; } } // 測(cè)試代碼 $file = __FILE__; if(empty($argv[1])) { $t2 = Thread::getInstance("$file 1"); $t3 = Thread::getInstance("$file 2"); $t4 = Thread::getInstance("$file 3"); $t5 = Thread::getInstance("$file 4"); $t5 = Thread::getInstance("$file 5"); $t5 = Thread::getInstance("$file 6"); $t2 = Thread::getInstance("$file 7"); $t3 = Thread::getInstance("$file 8"); $t4 = Thread::getInstance("$file 9"); $t5 = Thread::getInstance("$file 10"); $t5 = Thread::getInstance("$file 11"); $t5 = Thread::getInstance("$file 12"); echo "Main thread done\n"; } else { $somecontent = "\r\n//~~~~~~~~~~~~-這次請(qǐng)求序號(hào)是:" . $argv[1]; sleep(mt_rand(0, 3)); $handle = fopen($file, 'a+'); fwrite($handle, $somecontent); }
相關(guān)文章
PHP遞歸遍歷指定目錄的文件并統(tǒng)計(jì)文件數(shù)量的方法
這篇文章主要介紹了PHP遞歸遍歷指定目錄的文件并統(tǒng)計(jì)文件數(shù)量的方法,涉及php文件及目錄操作的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03非集成環(huán)境的php運(yùn)行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程
這篇文章主要介紹了非集成環(huán)境的php運(yùn)行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程,感興趣的小伙伴們可以參考一下2016-04-04PHP7中對(duì)十六進(jìn)制字符串處理的問(wèn)題詳解
在本篇文章里小編給大家整理的是一篇關(guān)于PHP7中對(duì)十六進(jìn)制字符串處理的問(wèn)題詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2021-11-11PHP面向?qū)ο蠓治鲈O(shè)計(jì)的經(jīng)驗(yàn)原則
你不必嚴(yán)格遵守這些原則,違背它們也不會(huì)被處以宗教刑罰。但你應(yīng)當(dāng)把這些原則看成警鈴,若違背了其中的一條,那么警鈴就會(huì)響起 。 ----- Arthur J.Riel2008-09-09php進(jìn)行支付寶開(kāi)發(fā)中return_url和notify_url的區(qū)別分析
這篇文章主要介紹了php進(jìn)行支付寶開(kāi)發(fā)中return_url和notify_url的區(qū)別,較為詳細(xì)的分析了return_url和notify_url的區(qū)別與用法,需要的朋友可以參考下2014-12-12PHP對(duì)表單提交特殊字符的過(guò)濾和處理方法匯總
本篇文章主要是對(duì)PHP對(duì)表單提交特殊字符的過(guò)濾和處理方法進(jìn)行了總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02PHP 實(shí)現(xiàn)判斷用戶是否手機(jī)訪問(wèn)
這篇文章主要介紹了PHP 實(shí)現(xiàn)判斷用戶是否手機(jī)訪問(wèn)的方法,十分實(shí)用的功能,推薦給有需要的小伙伴。2015-01-01php在window iis的莫名問(wèn)題的測(cè)試方法
其實(shí)很簡(jiǎn)單,就一句話,見(jiàn)招拆招,通過(guò)c:\php\php.exe -i 命令實(shí)現(xiàn)2013-05-05PHP實(shí)現(xiàn)數(shù)組array轉(zhuǎn)換成xml的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)數(shù)組array轉(zhuǎn)換成xml的方法,涉及php針對(duì)數(shù)組的遍歷及xml格式文件的構(gòu)造技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07