欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php腳本守護進程原理與實現方法詳解

 更新時間:2017年07月20日 08:55:51   作者:3wlog  
這篇文章主要介紹了php腳本守護進程原理與實現方法,較為詳細的分析了php腳本守護進程的實現思路、原理、格式及具體實現方法,需要的朋友可以參考下

本文實例講述了php腳本守護進程原理與實現方法。分享給大家供大家參考,具體如下:

思路:

1. while 循環(huán),若當前沒有數據要操作可以休眠;
2. crontab 腳本每隔固定時間段執(zhí)行該腳本,執(zhí)行時先檢測是否已在執(zhí)行,若無 執(zhí)行,有則 跳過。
3. nohup  后臺執(zhí)行
4. flock -xn  加鎖

實例:

要執(zhí)行代碼:index.php

<?php
set_time_limit(0);
//死循環(huán)
while(1) {
  $message = '1111111' . "\n";
  error_log($message);
  sleep(5);
}
#/tmp/lock/test1.lock 為當前進程要鎖定的文件,不同的進程配置不同的鎖文件,該文件會自動創(chuàng)建
* * * * * flock -xn /tmp/lock/test1.lock -c 'nohup php index.php >> /php/test.log 2>&1 &'
* * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php >> /home/fdipzone/php/test.log'

在寫好的php腳本。為防止守護進程內存溢出,建議定期檢測內存占用。
將以下代碼放到業(yè)務腳本中:

if(memory_get_usage()>100*1024*1024){
  exit('內存溢出');//大于100M內存退出程序,防止內存泄漏被系統(tǒng)殺死導致任務終端
}

注意:

nohup 任務查看與關閉方法:

關閉:

//方法一:
ps -e | grep commend
kill -9 pid
//方法二:
fg %n  //n為jobs命令查看的進程號

查看:

//查看后臺進程
jobs

原理:

使用linux flock 文件鎖實現任務鎖定,解決沖突

格式:

flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command

選項

-s, --shared:    獲得一個共享鎖
-x, --exclusive: 獲得一個獨占鎖
-u, --unlock:    移除一個鎖,通常是不需要的,腳本執(zhí)行完會自動丟棄鎖
-n, --nonblock:  如果沒有立即獲得鎖,直接失敗而不是等待
-w, --timeout:   如果沒有立即獲得鎖,等待指定時間
-o, --close:     在運行命令前關閉文件的描述符號。用于如果命令產生子進程時會不受鎖的管控
-c, --command:   在shell中運行一個單獨的命令
-h, --help       顯示幫助
-V, --version:   顯示版本

運行一個php文件,文件鎖使用獨占鎖,如果鎖定則失敗不等待。參數為-xn

* * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php >> /home/fdipzone/php/test.log'

這樣當任務未執(zhí)行完成,下一任務判斷到/tmp/mytest.lock被鎖定,則結束當前的任務,下一周期再判斷。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP進程與線程操作技巧總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總

希望本文所述對大家PHP程序設計有所幫助。

相關文章

  • php獲取今日開始時間和結束時間的方法

    php獲取今日開始時間和結束時間的方法

    本篇文章實例講述了php獲取今日開始時間和結束時間的方法,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • php實現的css文件背景圖片下載器代碼

    php實現的css文件背景圖片下載器代碼

    這篇文章主要介紹了php實現的css文件背景圖片下載器代碼,涉及文件與URL地址的操作,是非常實用的技巧,需要的朋友可以參考下
    2014-11-11
  • PHP之十六個魔術方法詳細介紹

    PHP之十六個魔術方法詳細介紹

    PHP中把以兩個下劃線__開頭的方法稱為魔術方法(Magic methods),這些方法在PHP中充當了舉足輕重的作用。這里進行詳細介紹,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • PHP根據兩點間的經緯度計算距離

    PHP根據兩點間的經緯度計算距離

    這篇文章主要介紹了PHP如何根據兩點間的經緯度計算距離,代碼很簡單,但很實用,需要的朋友可以參考下
    2014-10-10
  • 用php實現像JSP,ASP里Application那樣的全局變量

    用php實現像JSP,ASP里Application那樣的全局變量

    用php實現像JSP,ASP里Application那樣的全局變量...
    2007-01-01
  • 詳解PHP的抽象類和抽象方法以及接口總結

    詳解PHP的抽象類和抽象方法以及接口總結

    這篇文章主要介紹了PHP的抽象類和抽象方法以及接口總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • php數組遍歷類與用法示例

    php數組遍歷類與用法示例

    這篇文章主要介紹了php數組遍歷類與用法,結合實例形式分析了php基于面向對象的數組遍歷、讀取操作封裝與使用技巧,需要的朋友可以參考下
    2019-05-05
  • PHP遍歷目錄實現方法介紹

    PHP遍歷目錄實現方法介紹

    PHP中的目錄遍歷細說教程在編寫PHP應用的過程當中,對指定目錄的遍歷、文件的篩選是在所難免也是至關重要的,PHP本身提供了解析和讀取目錄的強大方法
    2023-03-03
  • 淺談使用PHP開發(fā)微信支付的流程

    淺談使用PHP開發(fā)微信支付的流程

    本文是給大家簡單的介紹了下php開發(fā)微信支付的整個流程,對大家了解熟悉使用php開發(fā)微信支付非常有幫助,有需要的小伙伴可以參考下。
    2015-10-10
  • JS操作XML中DTD介紹及使用方法分析

    JS操作XML中DTD介紹及使用方法分析

    這篇文章主要介紹了JS操作XML中DTD介紹及使用方法,結合實例形式分析了DTD概念、原理及校驗xml文檔的相關操作技巧,需要的朋友可以參考下
    2019-07-07

最新評論