導航:首頁 > 文件教程 > phpweb網站計劃任務功能

phpweb網站計劃任務功能

發布時間:2023-03-26 01:43:36

『壹』 php discuz的定時任務是什麼原理怎麼實現的求高手解答

php中定時計劃和睜任務的實現原理:
當 PHP 腳本正常地運行 NORMAL 狀態時,連接為有效。當遠程客戶端中斷連接時,ABORTED 狀態的標記將會被打開。遠程客戶端連接的中斷通常是由用戶點擊 STOP 按鈕導致的。當連接時間超過 PHP 的時限時,TIMEOUT 狀態的標記將被打開。

示例代碼

<?php
ignore_user_abort(true);set_time_limit(0);
date_default_timezone_set('PRC'); // 切換到中國的時間

$run_time = strtotime('+1 day'); // 定時任務第一次執行的時間是明喚搏歲天的這個時候
$interval = 3600*12; // 每12個小時執行一次

if(!file_exists(dirname(__FILE__).'/cron-run')) exit(); // 在目錄下存放一個cron-run文件,如果這個文件不存在,說明已經在執行過程中了,該任務就不能再激活,執行第二次,否則這個文件被多次訪問的話,伺服器就要崩潰掉了

do {
if(!file_exists(dirname(__FILE__).'/cron-switch')) break; // 如果不存在cron-switch這個文件,就停止執行,這是一個開關的作用
$gmt_time = microtime(true); // 當前的運行時間,精確到0.0001秒
$loop = isset($loop) && $loop ? $loop : $run_time - $gmt_time; // 這里處理是為了確定還要等多久才開始第一次執行任務,$loop就是要等多久才執行的時間間隔
$loop = $loop > 0 ? $loop : 0;
if(!$loop) break; // 如果循環的間隔為零,則停止
sleep($loop);
// ...
// 執行某些代碼
// ...
@unlink(dirname(__FILE__).'/cron-run'); // 這里就是通過刪除cron-run來告訴程序,這個定時任務已經在執行過程中,不能再銀迅執行一個新的同樣的任務
$loop = $interval;
} while(true);

『貳』 利用php代碼,如何讓伺服器自動定時更新資料庫數據

兄弟。。伺服器是不能操作資料庫的,只有php才能操作資料庫。。應該是伺服器定期執行某個php程序,這個php程序刷新資料庫。。linux下面可以用crontab命令,把你的php程序寫在一個文件裡面,然後用crontab命令定期調用。。

『叄』 php如何每天定時執行

php做不到每天定時執行,只有java或者c可以,因為php是不訪問頁面就不會動得代碼,但是有一個方法可以曲線救國

你寫一個頁面是你要每天定時執行的頁面,然後視你的操作系統而言,做定時任務,定時去訪問這個頁面

  1. 如果是windows請使用任務計劃功能

  2. 如果是linux請使用定時任務Cron,在定時的時候使用curl來訪問你那個頁面。以下我只貼出linux的解決方案,因為一般伺服器都是linux的,windows的大家都會


=========================linux cron 入門 ============================


Linux操作系統定時任務系統 Cron 入門
cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
你也可以將這個服務在系統啟動的時候自動啟動:
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了,Cron服務提供以下幾種介面供大家使用:
1.直接用crontab命令編輯
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任務調度的crond常駐命令
crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
1、linux任務調度的工作主要分為以下兩類:
*系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存
*個人執行的工作:某個用戶定期要做的工作,例如每隔10分鍾檢查郵件伺服器是否有新信,這些工作可由每個用戶自行設置。
2.crontab命令選項:
-u指定一個用戶,
-l列出某個用戶的任務計劃,
-r刪除某個用戶的任務,
-e編輯某個用戶的任務
3.cron文件語法:
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范圍,0表示周日一般一行對應一個任務)
4.記住幾個特殊符號的含義:
"*"代表取值范圍內的數字,
"/"代表"每",
"-"代表從某個數字到某個數字,
","分開幾個離散的數字
一、任務調度設置文件的寫法
可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也可以直接修改/etc/crontab文件
具體格式如下:
Minute Hour Day Month Dayofweek command
分鍾 小時 天 月 天每星期 命令
每個欄位代表的含義如下:
Minute 每個小時的第幾分鍾執行該任務
Hour 每天的第幾個小時執行該任務
Day 每月的第幾天執行該任務
Month 每年的第幾個月執行該任務
DayOfWeek 每周的第幾天執行該任務
Command 指定要執行的程序
在這些欄位里,除了「Command」是每次都必須指定的欄位以外,其它欄位皆為可選欄位,可視需要決定。對於不指定的欄位,要用「*」來填補其位置。
舉例如下:
5 * * * * ls 指定每小時的第5分鍾執行一次ls命令
30 5 * * * ls 指定每天的 5:30 執行ls命令
30 7 8 * * ls 指定每月8號的7:30分執行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30執行ls命令
30 6 * * 0 ls 指定每星期日的6:30執行ls命令[註:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10號及20號的3:30執行ls命令[註:「,」用來連接多個不連續的時段]
25 8-11 * * * ls 每天8-11點的第25分鍾執行ls命令[註:「-」用來連接連續的時段]
*/15 * * * * ls 每15分鍾執行一次ls命令 [即每個小時的第0 15 30 45 60分鍾執行ls命令 ]
30 6 */10 * * ls 每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls命令。 ]
每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件
50 7 * * * root run-parts /etc/cron.daily [ 註:run-parts參數表示,執行後面目錄中的所有可執行文件。 ]
二、新增調度任務
新增調度任務可用兩種方法:
1、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。
三、查看調度任務
crontab -l //列出當前的所有調度任務
crontab -l -u jp //列出用戶jp的所有調度任務
四、刪除任務調度工作
crontab -r //刪除所有任務調度工作
五、任務調度執行結果的轉向
例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
註:2>&1 表示執行結果及錯誤信息。
編輯/etc/crontab 文件配置cron
cron服務每分鍾不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次/etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號
HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行/etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的腳本
大家注意"run-parts"這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了
例如: 1、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務
11 2 21 10 * rm -rf /mnt/fb

『肆』 如何使用php創建windows計劃任務

schtasks/和昌咐create/迅州ruAdministrator/喚純rppass/schourly/mo /tnReportTrans/trReportTrans.bat

『伍』 php如何讓留存顯示表單中的數據每天自動提交一次

PHP是沒有自動提交的功能的。想要實臘察派現自動提交只能沒賣從系統入手。如果是WINDOWS系統可以使用計劃任務。如果是linux系統可以使用crontab命令。實現每天固定時間訪問某個輪賀網址某個php網址達到自動提交數據的目的。

『陸』 PHP+MySQL如何寫任務計劃,比如我要在5分鍾後刪除一條記錄,怎麼操作

首先你要知道欄位endtime的值,假如為$endtime
mysql_query("delete from end where endtime='$endtime'",$conn);
shell腳本:
備份的腳本比較簡單:
#!/bin/bash

# 定義年 月 日
year=`date +%Y`
month=`date +%m`
day=`date +%d`

# 定義備份的目錄
BACKDIR=/bak_1/mysql/$year/$month/$day

# MySQL的root密碼
ROOTPASS=123456

# 建立目錄
mkdir -p $BACKDIR

# 獲鬧鏈櫻取資料庫列表
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`

# 備份
for dbname in $DBLIST
do
mysqlhot $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhot
done

復制代碼

上面的腳本將
數據
庫按"年/月/日"目錄結構備份,將腳本存為back.sh添加到cron里每天凌晨3點執行

00 03 * * * root /root/back.sh

下面的是每月3號刪除上個月的備份,存為del_bak.sh,每月3號3點3分執行

03 03 03 * * root /root/del_bak.sh

注意腳本液叢上傳後,要chmod一下許可權,比如chmod 755 /root/back.sh
#!/bin/bash

# 定義年 月 日
year=`date +%Y`
month=`date +%m`
#day=`date +%d`

# 取上一個月
month=`expr $month - 1`

# 如果是1月,則上一月為12,並且年也減1
if [ $month -eq 0 ]; then
month=12
day=31
year=`expr $year - 1`
fi

# 因為備份時小於10月的月份有前導零,所以這里判斷如果小喚讓於10月,則加前導零
if [ $month -lt 10 ]; then
pre=0
fi
#獲取要刪除的目錄名
BACKDIR=/bak1/mysql/$year/$pre$month

#刪除了
rm -rf $BACKDIR

『柒』 我想用php做個任務提醒功能,如我今天添加一個任務,任務時間是明天,到了明天我這個任務做個主動提醒

樓主我大概了解你的意思,要實現這種問題應該是可以通過兩種方案,一個是蔽兄後端推送提醒(但是web程序如果不通過瀏覽器訪問的話不能像APP一樣可以推送消息後提醒啊~),另外一種就是前端開定時器匹配時間,匹配後提醒,大概思路如下

1:後端長輪詢提醒,查詢到後,基本不現實,如果瀏覽器支持websocket還可以考慮,為了通用性還是別考慮了。

2:前端提醒
a.後端將提醒時間打到頁面,js開個setInterval進行虧並滲匹配,時間匹配相同時提醒

b.通過ajax,也是定時想後端請求,後端檢測是否需要銷脊提醒,來返回前端,讓前端處理

『捌』 php網站程序如何按照指定時間每日運行

php計劃任務(按指定時間來運行某個程序)
前一陣子遇到有一個程序要在某個時間點來運行,但想來想去也不知用那種方法來觸發這個程序,第一個想到的時用JS配合PHP來現實,但沒有實現成功,後來請教了一個高手說可以在操作系統里配置。在 Linux 中,我們經常用到 crond 服務蔽冊液器來完成這項工作。cron 伺服器可以根據配置文件約定的時間來宏物執行特定的作務。比如我們可以在配置文件中約定每天早上4點,對 httpd 伺服器重新啟動,這就是一個計劃任務;windows 的計劃任務我們大家都很熟悉。下面我要介紹的是網站計劃任務(訪問觸發)。

第一個首先要解決的時誰來觸發,我選擇的是用前台頁面來觸發,
代碼如下:
代碼:<img src="visit.php?job=cron&t=1212880316" alt="" style="width:0px;height:0px;" />
t=1212880316//這個是時間

第二個要解決的時什麼時侯運行,(具體的不講了,把代碼貼出)
代碼://計劃執行時間
if($job=='cron'){
check_method();
//查詢資料庫的下一個時間是否小於現在的時間
if($maxrecord['deltemptime']<$nowtime['timestamp']){
$crondb = array();
//day為0為每日 week周 minute時間斷 hour什麼時侯開始
$rt['cron'] = array('day'=>'0','week'=>$config['cron_week'],'m'=>$config['cron_minute'],'hour'=>$config['cron_hour']);
$crondb[] = $rt;
}
foreach ($crondb AS $key => $cron_val){
//設置了允許分鍾段
if (!empty($config['cron_minute'])){
$m = explode(' ', $config['cron_minute']);

$m_now = intval(local_date('i'姿培,$nowtime['timestamp']));
if (!in_array($m_now, $m)) {//不包含此分鍾的跳出
continue;
}
}

/*執行任務*/
/*********此處是你寫的任務***********************/
$next_time = get_next_time($cron_val['cron']);
$DB->query("UPDATE `maxrec` SET `deltemptime`={$next_time}");
}
exit;
}

閱讀全文

與phpweb網站計劃任務功能相關的資料

熱點內容
如何給網站掛黑鏈 瀏覽:282
360斷網急救箱網路異常修復不了 瀏覽:889
身份證驗證的js文件 瀏覽:994
什麼人經常換微信名字 瀏覽:707
網站源碼挖掘 瀏覽:944
荔枝fm和app哪個播放量好 瀏覽:535
樂秀音頻在哪個文件里 瀏覽:486
以數據說話什麼意思 瀏覽:319
java中對象 瀏覽:794
酷狗網路機頂盒如何設置 瀏覽:408
threejs添加文字 瀏覽:436
微信春節理財通 瀏覽:948
qq主題模塊應用教程 瀏覽:993
javaweb項目打包 瀏覽:59
qq主題是哪個文件夾里 瀏覽:642
超越狂暴升級txt書包 瀏覽:263
cad復制不能粘貼到新建文件 瀏覽:565
linux網路socket編程 瀏覽:926
戰爭雷霆客戶端在哪個文件里 瀏覽:847
如何授權點淘app讀取步數 瀏覽:671

友情鏈接