PHP創(chuàng)建單例后臺進(jìn)程的方法示例
本文實(shí)例講述了PHP創(chuàng)建單例后臺進(jìn)程的方法。分享給大家供大家參考,具體如下:
可以通過如下語句啟動一個PHP后臺進(jìn)程:
$command = " php script.php ";
$pid = exec("nohup $command > /dev/null 2>&1 & echo $!");
nohup表示這個進(jìn)程獨(dú)立于創(chuàng)建的用戶,可以以守護(hù)方式運(yùn)行。
如果需要這個后臺進(jìn)程是單例運(yùn)行的,那么可以通過下面的方法來記錄/判斷進(jìn)程是否已運(yùn)行
//query the database for process id
$query = "SELECT pid FROM `daemons` WHERE `pid` = '2013' LIMIT 1";
$result = mysql_query($query);
$pid = mysql_result($result, 0, 'pid');
//check if the process is running
exec("ps $pid", $pState);
if((count($pState) >= 2) && !empty($pid))
{
echo "RUNNING";
}
else
{
echo "INACTIVE";
}
也可以把pid寫入文件,但如果在一個分布式任務(wù)環(huán)境中,則放在數(shù)據(jù)庫中要更好
停止一個后臺進(jìn)程:
//check if the process from the database is running
exec("ps $pid", $pState);
if((count($pState) >= 2))
{
//if the process is running, kill it
exec("kill $pid");
//update database row with an empty process id
}
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP進(jìn)程與線程操作技巧總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《php日期與時間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
深入解析yii權(quán)限分級式訪問控制的實(shí)現(xiàn)(非RBAC法)
本篇文章是對yii權(quán)限分級式訪問控制的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
php實(shí)現(xiàn)微信公眾平臺賬號自定義菜單類
這篇文章主要介紹了php實(shí)現(xiàn)微信公眾平臺賬號自定義菜單類的方法,涉及針對微信接口API的二次開發(fā),是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
php中array_unshift()修改數(shù)組key注意事項(xiàng)分析
PHP獲取指定函數(shù)定義在哪個文件中以及其所在的行號實(shí)例
PHP實(shí)現(xiàn)微信模擬登陸并給用戶發(fā)送消息的方法【文字,圖片,圖文】
PHP查詢并刪除數(shù)據(jù)庫多列重復(fù)數(shù)據(jù)的方法(利用數(shù)組函數(shù)實(shí)現(xiàn))
Ajax+PHP實(shí)現(xiàn)的模擬進(jìn)度條功能示例

