一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - 解析crontab php自動運行的方法

解析crontab php自動運行的方法

2020-04-26 12:03PHP教程網(wǎng) PHP教程

本篇文章是對crontab php自動運行的方法進行了詳細的分析介紹,需要的朋友參考下

crontab是linux自帶的一個命令 
使php自動運行的方法

php自動運行有很多方法,這里分以下DZ以及一些通過系統(tǒng)完成的方法和直接觸發(fā)運行駐留系統(tǒng)的方法。
Discuz后臺有個計劃任務(wù),可以使php自動運行。
DZ計劃任務(wù)的機制是這樣:
1.首先在到了觸發(fā)計劃任務(wù)的時間,有訪問(會員,游客,搜索引擎的蜘蛛)然后觸發(fā)該計劃任務(wù)發(fā)生。(因為PHP是觸發(fā)是語言,沒有人去訪問他,他什么也做不了。)
2. 計劃任務(wù)執(zhí)行.
3. 執(zhí)行成功,返回執(zhí)行成功的信息,更新到數(shù)據(jù)庫中記錄當前執(zhí)行的時間,下一次需要執(zhí)行的時間。
目前讓php自動運行的的方法有以下幾種方法:
1:在windows下用計劃任務(wù)
  在linux下用crantab
缺點:必須具有服務(wù)器權(quán)限
2:用個某個網(wǎng)頁隔一段時間去刷新,比如用js或者php程序來實現(xiàn)。
缺點:必須用某個工具將該頁開著。
3:在有用戶訪問的時候觸發(fā)
缺點:必須在用戶訪問的頁面里包含觸發(fā)程序。
用crontab定時執(zhí)行
是 UNIX的一個命令
crontab-操作每個用戶的守護程序和該執(zhí)行的時間表。
具體的部分參數(shù)說明如下:
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用標準輸入替代目前的crontab.
crontab-1[user]-列出用戶目前的crontab.
crontab-e[user]-編輯用戶目前的crontab.
crontab-d[user]-刪除用戶目前的crontab.
crontab-c dir- 指定crontab的目錄。
crontab文件的格式:M H D m d cmd.
M: 分鐘(0-59)。
H:小時(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期內(nèi)的天(0~6,0為星期天)。
cmd要運行的程序,程序被送入sh執(zhí)行,這個shell只有USER,HOME,SHELL這三個環(huán)境變量。
下面是一個例子文件:

復(fù)制代碼 代碼如下:

#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6點
106* * * date
#每兩個小時
0*/2* * * date
#晚上11點到早上8點之間每兩個小時,早上部點
0 23-7/2,8* * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4* mon-wed date
#1月份日早上4點
0 4 1 jan* date


范例

復(fù)制代碼 代碼如下:

lark:~>crontab-1 列出用戶目前的crontab.
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
10 6* * * date
0*/2* * * date
0 23-7/2,8 * * * date


在linux,有多種方式可以實現(xiàn)定時運行,使用最靈活的應(yīng)該是crontab, 在使用crontab必須特別注意環(huán)境變量問題,在此以執(zhí)行oracle的sqlplus為例, 說明crontab的使用方法。

 

1:crontab 使用方法: crontab [ -e | -l | -r ] 文件名 -e:編輯任務(wù) -l:顯示任務(wù)信息 -r:刪除定時執(zhí)行任務(wù)信息

2:crontab中處理的文件格式為 分鐘 小時 日期 月 星期 執(zhí)行的文件名 *代表所有條件 5 * * * * rem /home/oracle/execsql 代表每個小時的5分鐘時執(zhí)行/home/oracle/execsql文件

3:對于sql等需要在特定的環(huán)境變量下運行的命令,在執(zhí)行文件中必須列出。 如在oracle下執(zhí)行sqlplus,必須按以下格式編寫: $ cat execsql ORACLE_HOME=/ora815;export ORACLE_HOME ORACLE_OWNER=oracle;export ORACLE_OWNER ORACLE_SID=ora815;export ORACLE_SID ORACLE_BASE=/ora815/app/oralce;export ORACLE_BASE LD_LIBRARY_PATH=$ORACLE_HOME/lib;export LD_LIBRARY_PATH PATH=$PATH:$ORACLE_HOME/bin:$LD_LIBRARY_PATH;export PATH NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280;export NLS_LANG /ora815/bin/sqlplus test1/test1 @test1.ext (執(zhí)行@test1.ext文件,數(shù)據(jù)庫的用戶名/密碼為test1/test1)

其中要求execsql為可執(zhí)行的程序 $ ls -al execsql -rwxr-xr-x 1 oracle dba 374 Oct 07 15:17 execsql
使用crontab,使php程序在12:00運行
就按照下面的格式改一下,加在crontab就行了
00 0 * * * cd /你的程序路徑;php 你的程序名字.php
這個需要編譯的時候有cli或者cgi模式的php.
另外:
若無管理權(quán)限,只有虛擬空間
PHP里有個函數(shù)很有用。這是在最近的開發(fā)中才逐漸用到的。 int ignore_user_abort ( [bool setting] ) 這個函數(shù)的作用是指示服務(wù)器端在遠程客戶端關(guān)閉連接后是否繼續(xù)執(zhí)行下面的腳本。 setting 參數(shù)是一個可選參數(shù)。如設(shè)置為True,則表示如果用戶停止腳本運行,仍然不影響腳本的運行(即:腳本將持續(xù)執(zhí)行);如果設(shè)置為False,則表示當用戶停止運行腳本程序時,腳本程序?qū)⑼V惯\行。 下面這個例子,在用戶關(guān)閉瀏覽器后,該腳本仍然后在服務(wù)器上繼續(xù)執(zhí)行:

復(fù)制代碼 代碼如下:

 ignore_user_abort(); // 后臺運行
 set_time_limit(0); // 取消腳本運行時間的超時上限
 do{
 sleep(60); // 休眠1分鐘
 }while(true);


 除非在服務(wù)器上關(guān)閉這個程序,否則這斷代碼將永遠執(zhí)行下去。

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲AV无码偷拍在线观看 | 99久久香蕉国产线看观香 | 香蕉久久久久 | 兽操人| 动漫美女被吸乳羞羞小说 | 二次元美女脱裤子让男人桶爽 | 国产亚洲精品久久yy5099 | 日噜噜 | 午夜精品亚洲 | 男人的天堂在线观看入口 | 国产经典一区二区三区蜜芽 | 天天天天天天天操 | 国产一区二区三区久久小说 | lubuntu网页版在线 | yellow视频在线观看免费 | uoco福利姬网站 | 青青国产成人久久激情91麻豆 | gangbang日本 | 精品视频免费 | 国产一级特黄aa大片在线 | 亚洲国产成人久久综合区 | 韩国三级日本三级香港三级黄 | 思思91精品国产综合在线 | 无码天堂亚洲国产AV久久 | 国产精品探花一区在线观看 | 国产梦呦精品 | 星星动漫在线观看无删减 | 精品一区二区三区免费观看 | 日本护士handjob | 国产经典一区二区三区蜜芽 | 久久久无码精品亚洲A片软件 | 成人免费片 | 精品国产乱码久久久久久软件 | 四虎成人永久地址 | 我要看靠逼片 | 亚洲高清在线天堂精品 | 好吊妞乱淫 | 日本一区二区视频在线 | 9总探花新品牛仔背带裤 | 羞羞色男人的天堂伊人久久 | 免费看国产精品麻豆 |