希望瀏覽器斷開連線後php程式碼能一直運作下去,找了很多方法都行不通
一.簡單直接不顧後果型
1
2
3
4
5
#6
7
8
9
10
<?php
ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續執行.
set_time_limit(0);// 透過set_time_limit(0)可以讓程式無限制的執行下去
ini_set('memory_limit','512M'); // 設定記憶體限制
$interval=60*30;// 每隔半小時跑
do{
//ToDo
sleep($interval); // 等待5分鐘
}
while(true);
缺點: 啟動之後,無法控制,除非終止PHP 宿主. 不要採用這樣方法, 除非你是黑客.
二. 簡單可控型
1
2
3
4
5
6
##10
11
12
13
14
15
16
# #17
18
19
20
#
config.php
# <?php
return 1;
?>
cron.php
o
#
#ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續執行.
set_time_limit(0);// 透過set_time_limit(0)可以讓程式無限制的執行下去
$interval=60*30;// 每隔半小時跑
do{
$run = include 'config.php';
# if (!$run) die('process abort');
//ToDo
sleep($interval);// 等待5分鐘
}
while(true);
透過改變config.php 的 return 0 , 來實現停止程式. 一個可行的方法是config.php檔案與某個特殊表單互動, 透過HTML頁面設定一些變數來進行設定
缺點: 佔系統資源, 長時間運行,會有一些意想不到的隱憂。例如記憶體管理方面的問題.
三.簡單改進型別
#1
##2##3
#4
5
6
7
8
9
##< ;?php$time=15;$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];/* function*/#sleep($time);file_get_contents($url);? >###### ############php腳本sleep 一段時間之後透過訪問自身的方式繼續執行. 就好像接力賽跑一樣..這樣就能保證每個PHP腳本執行時間不會太長. 也就不受time_out的限制了.######因為每一次循環php檔都是獨立執行,所以這種方法,避免了time_out的限制. 但是最好和上邊一樣加上控制碼. cofig.php , 以便能夠終止進程.###
上面的方法測試後無用,程式碼在運行幾分鐘後仍然會自動停止,個人希望其24小時不停運轉,請問還有其他方法嗎?或者有沒有一個網站能提供自動開啟網頁的服務,這樣我的程式碼就能隔一段時間啟動一次了