最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php中實現(xiàn)進程鎖與多進程的方法

 更新時間:2016年09月18日 09:14:50   作者:Rodgexue  
這篇文章給大家介紹了單進程的情況的進程鎖實現(xiàn)、進程鎖實現(xiàn)多進程、進程鎖在yii2中的實現(xiàn)以及殺死進程的命令,有需要的朋友們可以參考借鑒,下面來一起看看吧。

為什么需要進程鎖?

主要作用就是防止你重復執(zhí)行同一程序,主要用在crontab中,當你設置了一個定時任務,然后每分鐘執(zhí)行一次,如果不加進程鎖的話,之前的進程沒有執(zhí)行完的情況下。每分鐘都會有新的進程生成了。加上進程鎖之后,每次定時任務執(zhí)行的時候,就會去判斷之前的進程鎖是否存在,如果存在就不執(zhí)行。

1.單進程的情況的進程鎖實現(xiàn)

直接來個例子好了,寫個php腳本, 就先命名為process.php吧,代碼如下:

<?php
$lock_file = dirname(__FILE__) . "/process.lock";
$lock_file_handle = fopen($lock_file, 'w');
if ($lock_file_handle === false)
 die("Can not create lock file {$lock_file}\n");
if (!flock($lock_file_handle, LOCK_EX + LOCK_NB)) {
 die(date("Y-m-d H:i:s") . " Process already exists.\n");
}

while(1){
}

然后在linux環(huán)境下,執(zhí)行這個代碼,第一次會正常運行,然后第二次運行的時候就會提示:Process already exists. 之后無論執(zhí)行多少次都會出現(xiàn)這個提示表示進程失敗了。

php process.php & //&符號表示在后臺運行php


上面的代碼同樣可以利用在你定時計劃的腳本里,在開頭加上就好了。相當于對單個腳本加上進程鎖。

2.進程鎖實現(xiàn)多進程

上面說的是一個鎖對應一個php腳本,那要用進程鎖實現(xiàn)多進程的話,其實就是讓一個進程可以有多個進程鎖就好了。
對上面的代碼的進程鎖的名字部分稍加改動即可實現(xiàn),根據傳進來的參數來決定進程鎖的名字,如果傳進來的參數一致則對應同一個鎖。

if(!($argc > 1))
{
 $lock_file = dirname(__FILE__) . "/process.lock";
}else{
 unset($argv[0]);
 $lock_file = dirname(__FILE__) . "/process". implode('.', $argv) .".lock";
}

$lock_file_handle = fopen($lock_file, 'w');
if ($lock_file_handle === false){
 die("Can not create lock file $lock_file\n");
}

if (!flock($lock_file_handle, LOCK_EX + LOCK_NB)) {
 die(date("Y-m-d H:i:s") . " Process already exists.\n");
}

while(1){
}

在linux環(huán)境下。進入文件所在目錄,執(zhí)行php process.php 1, 然后新開個窗口,在執(zhí)行php process.php 1,就會提示Process already exists這個錯誤,但是如果你執(zhí)行的是php process.php 2,就會正常運行,同樣,你可以傳兩個參數,如php process.php 1 2,這樣的話,對應的又是新的進程鎖。這個實現(xiàn)主要用到的是argc和argv 這兩個php自帶的參數,argc表示參數總數,argv 表示具體調用的時候用的是哪個參數。

3.進程鎖在yii2中的實現(xiàn)

在yii2中要實現(xiàn)多進程的進程鎖的話,要繼承yii的console里的控制器,這樣能實現(xiàn)參數的傳遞,use yii\console\Controller;
然后在crontab中,命令如下,用yii自帶的命令來執(zhí)行定時腳本。然后進程鎖的代碼和上面的一樣就可以了。

* * * * * root /usr/local/bin/php /data/www/html/newVanish/yii 控制器名/方法 傳遞的參數 > /dev/null 2>&1

4.殺死進程的命令

這個絕對是壓箱底的東西了,一般人我不告訴他。
通過一條命令就能刪除對應的進程。下面的命令就是可以直接刪除進程名字為 process_name 的所有進程。要刪除什么只要直接將 process_name修改成你想要刪除的進程名字就可以了

ps aux|grep process_name |grep -v grep|awk '{print $2}'|xargs kill -9

總結

以上就是關于php中進程鎖與多進程實現(xiàn)的全部內容,希望這篇文章的內容對大家學習或者使用PHP能有所幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • 從Web查詢數據庫之PHP與MySQL篇

    從Web查詢數據庫之PHP與MySQL篇

    PHP+MySQL的組合是構建網站的一個常見搭配,不過如何使用PHP通過Web訪問MySQL數據庫呢?下面從Web數據庫架構的工作原理講起。
    2009-09-09
  • 解析php如何將日志寫進syslog

    解析php如何將日志寫進syslog

    本篇文章是對php中將日志寫進syslog的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP錯誤提示It is not safe to rely on the system……的解決方法

    PHP錯誤提示It is not safe to rely on the system……的解決方法

    今天小編就為大家分享一篇關于PHP錯誤提示It is not safe to rely on the system……的解決方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 推薦一款MAC OS X 下php集成開發(fā)環(huán)境mamp

    推薦一款MAC OS X 下php集成開發(fā)環(huán)境mamp

    這里給大家推薦一款在mac上搭建WEB服務器環(huán)境的集成環(huán)境安裝軟件,非常的好用,需要的朋友可以拿去,不用謝 ^_^
    2014-11-11
  • php設計模式 Factory(工廠模式)

    php設計模式 Factory(工廠模式)

    定義一個用于創(chuàng)建對象的接口,讓子類決定將哪一個類實例化,使用一個類的實例化延遲到其子類
    2011-06-06
  • php+iframe 實現(xiàn)上傳文件功能示例

    php+iframe 實現(xiàn)上傳文件功能示例

    這篇文章主要介紹了php+iframe 實現(xiàn)上傳文件功能,結合實例形式分析了PHP通過動態(tài)的創(chuàng)建iframe實現(xiàn)上傳文件的具體步驟、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2020-03-03
  • PHP中l(wèi)trim()函數的用法與實例講解

    PHP中l(wèi)trim()函數的用法與實例講解

    今天小編就為大家分享一篇關于PHP中l(wèi)trim()函數的用法與實例講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • php類自動加載失敗的處理方案及實例代碼

    php類自動加載失敗的處理方案及實例代碼

    在本篇文章里小編給大家整理了一篇關于php類自動加載失敗的處理方案及實例代碼,有興趣的朋友們可以學習參考下。
    2021-09-09
  • php中解析帶中文字符的url函數分享

    php中解析帶中文字符的url函數分享

    這篇文章主要介紹了php中解析帶中文字符的url函數分享,本文直接給出實現(xiàn)代碼,重點是對rawurlencode函數的使用上,需要的朋友可以參考下
    2015-01-01
  • php類的擴展和繼承用法實例

    php類的擴展和繼承用法實例

    這篇文章主要介紹了php類的擴展和繼承用法,以實例形式較為詳細的分析了php類的繼承及擴展操作技巧,需要的朋友可以參考下
    2015-06-06

最新評論

延吉市| 晋宁县| 保靖县| 海原县| 中卫市| 建始县| 北海市| 乌鲁木齐县| 金堂县| 公主岭市| 咸阳市| 河曲县| 卫辉市| 淮阳县| 东方市| 资源县| 滕州市| 济源市| 南通市| 新安县| 湖口县| 无锡市| 宁海县| 安平县| 托克托县| 伊春市| 北川| 正安县| 大冶市| 闻喜县| 金平| 西充县| 江都市| 如皋市| 且末县| 黄石市| 屏东市| 沙坪坝区| 舟山市| 师宗县| 高尔夫|