本文目錄一覽:
- 1、php中怎麼實現後台執行
- 2、求助各位大神,請問PHP腳本如何實現後台執行
- 3、如何讓PHP文件在後台運行,不限時間到運行完全
- 4、php如何在後台運行
- 5、PHP後台任務運行
- 6、php中怎麼實現後台執行??
php中怎麼實現後台執行
具體代碼如下:
?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, ”);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?
PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。
它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,
執行效率比完全生成HTML標記的CGI要高許多;
PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
求助各位大神,請問PHP腳本如何實現後台執行
ignore_user_abort(true); // 後台運行
set_time_limit(0); // 取消腳本運行時間的超時上限
後台運行的後面還要,set_time_limit(0); 除非在服務器上關閉這個程序,否則下面的代碼將永遠執行下去止到完成為止。
如果程序運行不超時,在沒有執行結束前,程序不會自動結束的.
=========================================
//PHP 中如何 在客戶端觸發,然後在服務器端執行一個函數,頁面關閉也繼續執行。要先返回用戶請求不要等待時。
ob_end_clean();#清除之前的緩衝內容,這是必需的,如果之前的緩存不為空的話,裏面可能有http頭或者其它內容,導致後面的內容不能及時的輸出
header(“Connection: close”);//告訴瀏覽器,連接關閉了,這樣瀏覽器就不用等待服務器的響應
header(“HTTP/1.1 200 OK”); //可以發送200狀態碼,以這些請求是成功的,要不然可能瀏覽器會重試,特別是有代理的情況下
//return false;//加了這個下面的就不執行了,不加這個無法返回頁面狀態,瀏覽器一直在等待狀態,可以關閉,但不是要的效果。
//die(); 或 return ;也一樣不執行下面的
//rundata();
//register_shutdown_function(“rundata”);
//return ;
ob_start();#開始當前代碼緩衝
echo “running,,,,.”;
//下面輸出http的一些頭信息
$size=ob_get_length();
header(“Content-Length: $size”);
ob_end_flush();#輸出當前緩衝
flush();#輸出PHP緩衝
#休眠PHP,也就是當前PHP代碼的執行停止,1秒鐘後PHP被喚醒,
#PHP喚醒後,繼續執行下面的代碼,但這個時候上面代碼的結果已經輸出瀏覽器了,
#也就是瀏覽器從HTTP頭中知道了服務端關閉了連接,瀏覽器將不在等待服務器的響應,
#反應給客戶的就是頁面不會顯示處於加載狀態中,換句話說用戶可以關掉當前頁面,或者關掉瀏覽器,
#PHP喚醒後繼續執行下面的代碼,這也就實現了PHP後台執行的效果,
#休眠的作用只是讓php先把前面的輸出作完,不要急於馬上執行下面的代碼,休息一下而已,也就是說下面的代碼
#執行的時候前面的輸出應該到達瀏覽器了
sleep(1);
echo ‘這裡的輸出用戶看不到,後台運行的’;
//下面代碼的任何輸出都不會輸出給瀏覽器,因為http連接已經關了,
//所以下面的代碼的執行屬於後台運行的
ignore_user_abort(true); // 後台運行,這個只是運行瀏覽器關閉,並不是直接就中止返回200狀態。
set_time_limit(0); // 取消腳本運行時間的超時上限
rundata();
function rundata(){//do something}
=========================================
用ignore_user_abort函數實現php計劃任務
代碼如下:
?php
ignore_user_abort(true);
set_time_limit(0);
while(1) {
$fp = fopen(‘time_task.txt’,”a+”);
$str = date(“Y-m-d h:i:s”).”\n\r”;
fwrite($fp,$str);
fclose($fp);
sleep(300); //半小時執行一次
}
?
=======================================
int ignore_user_abort ( [bool setting] )
這個函數的作用是指示服務器端在遠程客戶端關閉連接後是否繼續執行下面的腳本。
setting 參數是一個可選參數。如設置為True,則表示如果用戶停止腳本運行,仍然不影響腳本的運行(即:腳本將持續執行);如果設置為False,則表示當用戶停止運行腳本程序時,腳本程序將停止運行。
下面這個例子,在用戶關閉瀏覽器後,該腳本仍然後在服務器上繼續執行:
ignore_user_abort(true); // 後台運行
set_time_limit(0); // 取消腳本運行時間的超時上限
do{
sleep(60); // 休眠1分鐘
}while(true);
?
除非在服務器上關閉這個程序,否則這斷代碼將永遠執行下去。
————————————————————————-
ignore_user_abort(true); // 後台運行
set_time_limit(0); // 取消腳本運行時間的超時上限
echo ‘start.’;
sleep(1000);
echo ‘end.’;
?
如何讓PHP文件在後台運行,不限時間到運行完全
方案1:php
?php
$db = mysql_connect( … );
$mysql_select_db(…);
$sqlStr = …..;
$res = mysql_query($sqlStr);
….
….
mysql_close($db);
?
運行的時候, 在終端用以下命令:
%PHP_HOME%/bin/php ur_php_file.php
方案二:
mysql -uxxxx -pxxxx -Ne “select * from …..” db_name tmpfile
執行完了之後, 把tmpfile裡邊的退格鍵(\t)替換成逗號「,」, 把文件後綴改為csv就可以
php如何在後台運行
最好的辦法就是AJAX來實現,我寫個JQuery AJAX 的簡單例子給你參考
例:
div id=”myform”
p數量:input type=”text” name=”qur”//p
p大小:input type=”text” name=”size”//p
p顏色:input type=”text” name=”color”//p
pbutton id=”submit”確定/button/p
/div
$(function(){
$(“#submit”).click(function(){
var mydata = new object();
mydata.qur = $(“input[name=’qur’]”,”#myform”).val();
mydata.size = $(“input[name=’size’]”,”#myform”).val();
mydata.color = $(“input[name=’color’]”,”#myform”).val();
$.ajax({
type: “post”,
url: “your_ajax.php”,
data: mydata,
success:function(data){
alert(“保存成功!”);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
PHP後台任務運行
在運行前 先要了解一下 什麼是文件描述符。
什麼是文件描述符?
文件描述符是一個簡單的正整數,用以標明每一個被進程所打開的文件和socket。
最前面的三個文件描述符(0,1,2)分別與標準輸入(stdin),標準輸出(stdout)和標準錯誤(stderr)對應。
“21 file”和 ” file 21″區別?
1.php test.php 21 file :錯誤輸出到終端,標準輸出被重定向到文件file。
2.php test.php file 21 :標準輸出被重定向到文件file,然後錯誤輸出也重定向到和標準輸出一樣,所以錯誤也輸出到文件file。
nohup命令可以在用戶退出終端後仍然執行程序,
「21 /dev/null」表示不顯示標準輸出和錯誤輸出,
最後的表示推到後台執行。
php中怎麼實現後台執行??
用 ajax 實現異步加載
然後
i
gnore_user_abort(true);
//即使Client斷開(如關掉瀏覽器),PHP腳本也可以繼續執行.
set_time_limit(0);
while(1) {
$fp = fopen(‘time_task.txt’,”a+”);
$str = date(“Y-m-d h:i:s”).”\n\r”;
fwrite($fp,$str);
fclose($fp);
sleep(5); //半小時執行一次
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/289011.html