進行php文件後台監控執行(php實時監控)

本文目錄一覽:

PHP如何在後台執行

在後台執行,也就是cli模式。

去php安裝目錄找到php.exe這個文件,並且在命令行下執行它。具體方法去查手冊或google:php cli模式。

不過你說的這個需求,用不用cli模式都無所謂。其實這只是個異步請求而已。

你說的A腳本在執行過程中給B腳本傳輸數據。其實可以使用http協議,然後POST或者GET參數來達到傳數據的目的。

5樓給你的那個函數,其實就是放在A腳本中用來通過HTTP協議請求B腳本的一個函數。你可以在B文件中直接使用$HTTP_GET_VARS或$HTTP_POST_VARS來得到A腳本傳過去的數據。

另外還可以使用CURL庫來實現這種模擬http請求。

PHP如何後台線程監控數據庫?

提供一個很有趣的思路,不用cron實現這個功能譬如你的腳本url是 [*]php[*]1.去除你腳本的運行時限[*]2.運行你的處理代碼[*]3.sleep 30minute[*]4.fsocketopen( )5.exit

PHP程序,如何監控內存情況

看到有人寫透視寶做php監控的原理圖,跟你分享下。我估計大家做的方式都是差不多。

PHP運行支撐的ZendEngine早在設計過程中已經預留了豐富的Hook,可以有效干涉處理過程中的幾個關鍵步驟。利用了以下幾個Hook,就能方便的獲取數據:

1.           zend_compile_file zend_compile_string

加載分析文件或字符串,本身就會造成非常大的IO,如果過多地執行加載,無疑會造成內存和CPU的消耗.通過這兩個hook,可以取得文件名、執行行數、使用內存和CPU佔用時間。

2.           zend_execute zend_execute_internal

通過這兩個hook的使用,我們可以準確地分析得出一個PHP應用中的類調用、方法調用、方法參數、內存佔用和CPU佔用,加以分析,便可以準確得出應用系統運行過程中的方法運行棧,API調用地址,SQL語句,CacheKey以及Cache命中等關鍵信息。

3.           zend_throw_exception_hook

利用異常鉤子,可以準確地得到應用系統運行過程中出現的異常信息,當然包括異常發生的類\方法位置,參數,異常code和異常message。

4.           zend_error_cb

錯誤鉤子則更加直接,可以準確得到系統運行過程中出現的任何一個warning,代碼錯誤或語法錯誤。

請問php如何實現實時監控文件.

在服務端建立一個根據需要進行循環的PHP腳本就可以。

猜測一下,您的第二個問題,是不是想進行相關檢測以避免重複觸發這個腳本。

實際上,不建議由用戶行為觸發這個腳本,無論是服務端代碼,還是客戶端的異步Ajax。

如果要用PHP腳本進行不停的循環監控,請聯繫運維人員,服務器啟動,即在服務端開始運行這個腳本,他們會向您提供解決方案的。

真正的建議是,如果有任何可能,都不要使用PHP腳本利用循環代碼進行服務端的監控。

不得不承認,這個方面PHP的穩定性還差一些,Java或許可以這麼做,PHP就比較痛苦了。

比較可能的辦法是請運維人員幫忙,通報監控邏輯,然後請他安裝各種觸發條件調用相應的PHP代碼。

如果堅持使用PHP腳本進行相關工作,有兩個建議給您:

儘快釋放資源,無論腳本使用了什麼資源,包括文件、內存、數據庫等等,都儘快釋放,這種地方可萬萬不能偷懶,否則就是自虐了。

在這個腳本中進行獨立的手工日誌輸出,任何一層循環的入口都要進行記錄,這樣在監控失敗的時候才有辦法查找問題。

thinkphp中怎麼實現後台執行任務

ThinkPHP實現定時執行任務的兩種方法

1、方法一:v3.2.1

①、ThinkPHP/Library/Behavior/CronRunBehavior.class.php文件

      在這裡首先要說的就是這個自動執行任務文件,官方所給的這個文件存在BUG,我是用的是v3.2.1版本,後面的版本是否有改正大家可以嘗試一下。

[php] view plain

?php

/**

* =======================================

* Created by WeiBang Technology.

* Author: ZhiHua_W

* Date: 2016/9/22 0005

* Time: 上午 11:12

* Project: ThinkPHP實現定時執行任務

* Power: 自動執行任務

* =======================================

*/

namespace Behavior;

class CronRunBehavior

{

  public function run($params)

  {

      if (C(‘CRON_CONFIG_ON’)) {

          $this-checkTime();

      }

  }

  private function checkTime()

  {

      if (F(‘CRON_CONFIG’)) {

          $crons = F(‘CRON_CONFIG’);

      } else if (C(‘CRON_CONFIG’)) {

          $crons = C(‘CRON_CONFIG’);

      }

      if (!empty($crons) is_array($crons)) {

          $update = false;

          $log = array();

          foreach ($crons as $key = $cron) {

              if (empty($cron[2]) || $_SERVER[‘REQUEST_TIME’] $cron[2]) {

                  G(‘cronStart’);

                  R($cron[0]);

                  G(‘cronEnd’);

                  $_useTime = G(‘cronStart’, ‘cronEnd’, 6);

                  $cron[2] = $_SERVER[‘REQUEST_TIME’] + $cron[1];

                  $crons[$key] = $cron;

                  $log[] = ‘Cron:’ . $key . ‘ Runat ‘ . date(‘Y-m-d H:i:s’) . ‘ Use ‘ . $_useTime . ‘ s ‘ . “\r\n”;

                  $update = true;

              }

          }

          if ($update) {

              \Think\Log::write(implode(”, $log));

              F(‘CRON_CONFIG’, $crons);

          }

      }

  }

}

      此段代碼已經將bug修復,大家可以將其複製到 “ ThinkPHP/Library/Behavior/CronRunBehavior.class.php ” 文件中進行保存。

②、tgs.php

      在Application/Common/Conf文件夾中新建tags.php文件,進行標籤設置。

[php] view plain

?php

return array(

  //’配置項’=’配置值’

  ‘app_begin’ =array(‘Behavior\CronRunBehavior’),

);

③、config.php

      在Application/Common/Conf文件夾中的config.php文件進行自動運行配置。

[php] view plain

?php

return array(

  /* 自動運行配置 */

  ‘CRON_CONFIG_ON’ = true, // 是否開啟自動運行

  ‘CRON_CONFIG’ = array(

      ‘測試執行定時任務’ = array(‘Home/Index/crons’, ‘5’, ”), //路徑(格式同R)、間隔秒(0為一直運行)、指定一個開始時間

  ),

);

④、IndexController.class.php

      在Application/Home/Controller/IndexController.class.php文件中進行定時執行任務的編寫。

[php] view plain

?php

/**

* =======================================

* Created by WeiBang Technology.

* Author: ZhiHua_W

* Date: 2016/9/22 0005

* Time: 上午 11:20

* Project: ThinkPHP實現定時執行任務

* Power: 自動執行任務方法控制器

* =======================================

*/

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller

{

  /*

  public function index(){

  $this-show(‘style type=”text/css”*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: “微軟雅黑”; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }/stylediv style=”padding: 24px 48px;” h1:)/h1p歡迎使用 bThinkPHP/b!/p/divscript type=”text/javascript” src=”” charset=”UTF-8″/script’,’utf-8′);

  }

  */

  public function index()

  {

      $contents = file_get_contents(“test.txt”);

      //每次訪問此路徑將內容輸出,查看內容的差別

      var_dump($contents);

      exit;

      $this-assign(“contents”, $contents);

      $this-display();

  }

  //定時執行的方法

  public function crons()

  {

      //在文件中寫入內容

      file_put_contents(“test.txt”, date(“Y-m-d H:i:s”) . “執行定時任務!” . “\r\nbr”, FILE_APPEND);

  }

}

       這樣定時執行任務我們就寫好了,每隔5秒我們訪問任何項目的url,然後查看根目錄下的test.txt文件就會發現裡面的內容變化。

       注意:當你修改間隔時間時會發現沒有生效,這是你需要將Runtime/Data文件夾下的緩存文件刪除,間隔時間緩存存放在CRON_CONFIG.php文件中。

       純凈的項目文件下載地址: 歡迎大家下載指正。

2、方法2:v3.2.2

      此方法和方法一沒有多大的區別。

①、tags.php

      在/Application/Common/Conf目錄下新建tags.php文件。(此和方法一處一樣)

[php] view plain

?php

return array(

  //’配置項’=’配置值’

  ‘app_begin’ =array(‘Behavior\CronRunBehavior’),

);

②、crons.php

     在/Application/Common/Conf目錄下新建crons.php文件。(此處和方法一有區別,注意區分。)

[php] view plain

?php

return array(

  //myplan為我們計劃定時執行的方法文件,2是間隔時間,nextruntime下次執行時間

  //此文件位於/Application/Cron/目錄下

  ‘cron’ = array(‘myplan’, 2, nextruntime),

);

③、myplan.php

      在/Application/Common/目錄下新建 Cron文件夾,裡面新建文件myplan.php文件。

[php] view plain

?php

echo date(“Y-m-d H:i:s”).”執行定時任務!” . “\r\nbr”;

      此時我們就可以訪問項目的url,然後我們會發現在Application/Runtime/目錄下生成了~crons.php文件,文件內容如下:

[php] view plain

?php

  return array (

      ‘cron’ =

          array (

              0 = ‘myplan’,

              1 = 60,

              2 = 1398160322,

          ),

  );

?

      這樣就可以觀察結果了!

PHP寫的後台,如何監聽瀏覽器的請求,如何做到瀏覽器訪問一個地址,後台就有相應的處理的?

呃,不是很明白你的意圖,我就這樣回答吧

一般我們訪問一個頁面都是輸入有url

這時,瀏覽器發送了一個http請求,請求的內容當然是一個頁面

你所說的監聽瀏覽器的請求,與其說是後台腳本在監聽,倒不如說是服務器在監聽(腳本在服務器上運行),是服務器監聽到端口有請求,才去執行相應的腳本程序

一般情況下,我們有2種做法,讓後台腳本運行。

1是直接訪問該腳本文件(或者說是動態頁)

2是ajax請求(實際上也相當於把這個動態頁跑了一遍,只不過,不讓用戶看到)

瀏覽器訪問一個地址時,如果該地址映射的就是一個腳本頁的話,則該腳本頁就已經開始執行了(即所謂響應瀏覽器請求),當然前提是,你的服務器配置了可以讓php腳本運行的環境,能夠讓php腳本正常運行

至於監聽到請求之後如何處理請求,完全是看你的腳本頁是怎麼寫的,你的php文件寫了什麼功能,他就執行什麼功能

原創文章,作者:ICYMQ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/313287.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ICYMQ的頭像ICYMQ
上一篇 2025-01-07 09:43
下一篇 2025-01-07 09:43

相關推薦

發表回復

登錄後才能評論