本文目錄一覽:
- 1、PHP如何在後台執行
- 2、PHP如何後台線程監控資料庫?
- 3、PHP程序,如何監控內存情況
- 4、請問php如何實現實時監控文件.
- 5、thinkphp中怎麼實現後台執行任務
- 6、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-tw/n/313287.html