日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

利用PHP实现定时任务,利用php 实现定时任务简单实现 代码

發(fā)布時(shí)間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用PHP实现定时任务,利用php 实现定时任务简单实现 代码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

linux下可以借助crontab+php的方式(Crontab是一個(gè)很方便的在unix/linux系統(tǒng)上定時(shí)(循環(huán))執(zhí)行某個(gè)任務(wù)的程序 )

windows 下有兩種方式:

借助于vbscript腳本加載無(wú)窗口的服務(wù)

view plaincopy to clipboardprint?

1.do

2.set ws=createobject("wscript.shell")

3.ws.run"D:\php\php.exe D:\php\source\do.php",vbhide

4.wscript.sleep 5000 '毫秒

5.loop

新建文本文件,復(fù)制以上腳本,另存為后綴為*(.vbs)的文件后即可。

上面“D:\php\php.exe D:\php\source\do.php” 這種方式可以寫(xiě)在bat文件中,或者window計(jì)劃任務(wù)中都可以執(zhí)行。

php內(nèi)部支持的一種利用函數(shù)“ignore_user_abort ” 來(lái)永久執(zhí)行的方案。

view plaincopy to clipboardprint?

1.''<?php

2.ignore_user_abort(); // run script in background

3.set_time_limit(0); // run script forever

4.$interval=30; // do every 30 seconds...

5.do{

6.$fp = fopen('text3.txt','a');

7.fwrite($fp,'test');

8.fclose($fp);

9.sleep($interval); // wait 30 seconds

10.}while(true);

11.?>''

第三種方案,需要總是執(zhí)行腳本,而且響應(yīng)請(qǐng)求的時(shí)間是無(wú)限制的,對(duì)于定義了最大響應(yīng)時(shí)間的fastcgi方式不可行,腳本還是會(huì)停止。所以需要找一種更加穩(wěn)妥的方案。

**找到了**

數(shù)學(xué)是很神奇的東西。實(shí)際上定時(shí)執(zhí)行,是一個(gè)時(shí)間條件執(zhí)行,php中有取得時(shí)間秒數(shù)的函數(shù)time() 返回?fù)?jù)1970年1月1日開(kāi)始的秒數(shù),而我們通常定時(shí)任務(wù)執(zhí)行,可以使300秒,1000秒之類(lèi)的時(shí)間間隔,意味著 。這個(gè)就好處理了,time()%timestamp==0 只要整除到了符合間隔的時(shí)間,就執(zhí)行一次,恰好符合了定時(shí)的目的。

實(shí)際上最后一種簡(jiǎn)單實(shí)現(xiàn),解決的是普通請(qǐng)求中腳本定時(shí)任務(wù)的問(wèn)題,這里會(huì)受到響應(yīng)時(shí)間的限制,想讓這部分代碼執(zhí)行的更久一下可以參考ignore_user_abort和set_time_limit,如果需要大運(yùn)算量的處理,就需要借助前面介紹的方式在服務(wù)器端控制定時(shí)任務(wù)了,但作為普通需求,最后一種方案是一種簡(jiǎn)單直接的實(shí)現(xiàn),有一定意義!

來(lái)自:http://develop.9he.info/php/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E7%AE%80%E5%8D%95%E5%AE%9E%E7%8E%B0

其它方法:

下面的這段代碼,可以在當(dāng)前文件夾下,生成一個(gè)test.txt,并每隔20秒,往里面寫(xiě)入一個(gè)時(shí)間戳,無(wú)論客戶端是否關(guān)閉瀏覽器。

view plaincopy to clipboardprint?

1.ignore_user_abort(true);

2.set_time_limit(0);

3.

4.function write_txt(){

5.if(!file_exists(”test.txt”)){

6.$fp = fopen(”test.txt”,”wb”);

7.fclose($fp);

8.}

9.$str = file_get_contents(’test.txt’);

10.$str .= “"r"n”.date(”H:i:s”);

11.$fp = fopen(”test.txt”,”wb”);

12.fwrite($fp,$str);

13.fclose($fp);

14.}

15.

16.function do_cron(){

17.usleep(20000000);

18.write_txt();

19.}

20.

21.while(1){

22.do_cron();

23.}

關(guān)鍵的兩個(gè)函數(shù):

ignore_user_abort(true),這個(gè)函數(shù)的作用是,無(wú)論客戶端是否關(guān)閉瀏覽器,下面的代碼都將得到執(zhí)行。

set_time_limit(0),這個(gè)函數(shù)的作用是,取消php文件的執(zhí)行時(shí)間,要是沒(méi)有這個(gè)函數(shù)的話,默認(rèn)php的執(zhí)行時(shí)間是30秒,也就是說(shuō)30秒后,這個(gè)文件就say goodbay了。

總結(jié)

以上是生活随笔為你收集整理的利用PHP实现定时任务,利用php 实现定时任务简单实现 代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。