1. 程式人生 > >PHP實現定時任務的幾種方式和詳解

PHP實現定時任務的幾種方式和詳解

定時執行任務對於一個網站來說,是一個比較重要的任務,比如定時釋出文件,定時清理垃圾資訊等,現在的網站大多數都是採用PHP動態語言開發的,而對於PHP的實現決定了它沒有Java和.Net這種AppServer的概念,而http協議是一個無狀態的協議,PHP只能被使用者觸發,被呼叫,呼叫後會自動退出記憶體,沒有常駐記憶體。

如果非要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 7 8 9 10 11 12 13 14 15 16 17 18 19 <?php return 1; ?> cron.php ignore_user_abort();//關掉瀏覽器,PHP指令碼也可以繼續執行. set_time_limit(0);// 通過set_time_limit(0)可以讓程式無限制的執行下去 $interval=60*30;// 每隔半小時執行 do{ $run include 'config.php'; if(!$rundie('process abort'); //ToDo sleep($interval);// 等待5分鐘 }

相關推薦

PHP實現定時任務方式

定時執行任務對於一個網站來說,是一個比較重要的任務,比如定時釋出文件,定時清理垃圾資訊等,現在的網站大多數都是採用PHP動態語言開發的,而對於PHP的實現決定了它沒有Java和.Net這種AppServer的概念,而http協議是一個無狀態的協議,PHP只能被使用者觸

c#使用多線程的方式示例

請求 rgs result類型 creat 方法的參數 通過 net 完成 turn (1)不需要傳遞參數,也不需要返回參數 ThreadStart是一個委托,這個委托的定義為void ThreadStart(),沒有參數與返回值。 class Program { sta

c#使用多執行緒的方式示例

(1)不需要傳遞引數,也不需要返回引數 ThreadStart是一個委託,這個委託的定義為void ThreadStart(),沒有引數與返回值。 複製程式碼程式碼如下: class Program { static void Main(string[] args)

PHP實現定時任務方式

選項 等待 process 一個 temp 表示 服務器 實現 ref 關於定時任務,之前以前認識了一種最常用的:crontab定時任務。通過linux的定時任務去實現。今天又認識了一下php實現定時方式的其它方式,總結一下。 一 服務器定時任務 服務器定時任務,其實就是u

PHP實現定時任務的五方法

清理 toolbar 路徑 頁面 文檔 errors conf star 包含 定時運行任務對於一個網站來說,是一個比較重要的任務,比如定時發布文檔,定時清理垃圾信息等,現在的網站大多數都是采用PHP動態語言開發的,而對於PHP的實現決定了它沒有Java和.Net這種A

Web開發中 前端路由 實現方式適用場景

故事從名叫Oliver的綠箭蝦`說起,這位大蝦酷愛社交網站,一天他打開了 Twitter ,從發過的tweets的選項卡一路切到followers選項卡,Oliver發現頁面的內容變化了,URL也變化了,但為什麼頁面沒有閃爍重新整理呢?於是Oliver開啟的網路監控器(沒錯,Oliver是個程式設計師),他驚

06.實現servlet的方式,以及接口或者類之間的關系

ssa 圖片 servlet 容器 實例化 設備 blog public ide 接口:Servlet、ServletConfig、ServletRequest、ServletResponse、HttpServletRequest、HttpServletResponse、S

JS實現繼承的方式(轉)

多繼承 logs 影響 .cn sta 初始化 定義 附錄 style 轉自:幻天芒的博客 前言 JS作為面向對象的弱類型語言,繼承也是其非常強大的特性之一。那麽如何在JS中實現繼承呢?讓我們拭目以待。 JS繼承的實現方式 既然要實現繼承,那麽首先我們得有一個父類,

JS實現繼承的方式

簡單 成員 類構造 缺陷 屬性 con html 但是 內存 JS實現繼承的幾種方式 前言 JS作為面向對象的弱類型語言,繼承也是其非常強大的特性之一。那麽如何在JS中實現繼承呢?讓我們拭目以待。 JS繼承的實現方式 既然要實現繼承,那麽首先我們得有一個父類,代碼如

JavaScript實現繼承的方式總結一

相同 實踐 extend sta 執行 instance () class new 雖然在ES6中有了繼承,使用extends關鍵字就能實現。本篇講的不是這種,而是ES6之前的幾種實現繼承的方式。 (一)原型鏈 ECMAScript中將原型鏈作為實現繼承的主要方法。其基本思

java實現同步的方式(總結)

副本 增刪改 否則 都是 fin ret 語義 value art 為何要使用同步? java允許多線程並發控制,當多個線程同時操作一個可共享的資源變量時(如數據的增刪改查), 將會導致數據不準確,相互之間產生沖突,因此加入同步鎖以避免在該線程沒有完成操

Spring bean初始化與銷毀的方式區別

pack ack 構造 rop struct service() throws esc println 1. <bean> 元素的 init-method/destroy-method屬性指定初始化之後 /銷毀之前調用的操作方法 2. 指定方法上加上@PostC

JS類對象實現繼續的方式

var test 子類實例化 傳參 blog spa sim func prototype 0. ES6可以直接使用class,extends來繼承. 1. 原型繼承 1 2 父類: 3 4 function Persio

JAVASCRIPT實現繼承的方式

JAVASCRIPT實現繼承的幾種方式 對象冒充(多繼承):a. 代碼: function ClassA(sColor) { this.color = sColor; this.sayColor = function () { console.log(this.color); }; } functio

清除浮動的方式兼容性處理

不容易 初學 str strong ott tex right pos 文檔流 清除浮動的幾種方式和兼容性處理 在清除浮動前我們要了解兩個重要的定義: 浮動的定義:使元素脫離文檔流,按照指定方向發生移動,遇到父級邊界或者相鄰的浮動元素停了下來。 高度塌陷:浮動元素父元素高度

javascript中實現繼承的方式

eat 共享 all cto 原型 構造 child 構造函數 java javascript中實現繼承的幾種方式 1、借用構造函數實現繼承 function Parent1(){ this.name = "parent1" } function Child1()

javascript 面向物件(實現繼承的方式)

 1、原型鏈繼承 核心: 將父類的例項作為子類的原型 缺點:  父類新增原型方法/原型屬性,子類都能訪問到,父類一變其它的都變了 function Person (name) { this.name =

php連線資料庫的方式

  <?php $name = $_POST["u_name"]; //flag1:$_POST["u_name"] $pass = $_POST["u_pass"]; $sql2 = "select * from admin where username = ? and pas

map遍歷的方式效率問題

一、map遍歷的效率 先建立一個map,新增好資料: Map<String, String> map = new HashMap<>(); for (int i = 0; i < 1000000; i++) { map.put(i +

php檔案匯出的方式

最近需要大資料匯出,於是在網上找了一下,在這進行一下整理,希望可以幫助到大家。 一、PHP 自帶函式 fputcsv 可以實現列印報表(Excel)功能 優點是: 1 執行效率高 2 不需要第三方庫 3 用起來很方便 4 實時生成。用流的形式傳輸 缺點是: 1 在 Linux 執行後,