導航:首頁 > 編程語言 > linux定時任務執行php

linux定時任務執行php

發布時間:2022-06-04 07:31:35

『壹』 如何用php程序去創建linux定時任務

應該是用 -f 參數直接讀取一個文件,這樣不用交互輸入了。
不過 at 總覺得有點老。

『貳』 php定時執行任務的幾個方法

PHP定時執行的三種方式實現
1、windows 的計劃任務 2、linux的腳本程序 3、讓web瀏覽器定時刷新

具體實現
1、windows計劃任務

PHP很少在win伺服器上跑,具體實現也不再深究,看網上實現的原理大概是寫bat腳本,然後讓window任務添加執行這個bat腳本。
2、linux 的腳本實現
這里主要使用到crontab這個命令
使用方式 :

復制代碼 代碼如下:crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

說明 :

crontab是用來讓使用者在固定時間或固定間隔執行程式之用

使用crontab寫shell腳本,然後讓PHP調用shell,這個是利用linux的特性,應該還不算PHP自身語言的特性

3、PHP實現定時執行計劃任務
使用php讓瀏覽器刷新需要解決幾個問題
PHP腳本執行時間限制,默認的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設置max_execution_time時間(不推薦)
如果客戶端瀏覽器關閉,程序可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執行
如果程序一直執行很有可能會消耗大量的資源,解決辦法使用sleep使用程序休眠一會,然後在執行
PHP定時執行的代碼:

<?php ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續執行. set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執行下去 $interval=5;// 每隔5s運行 //方法1--死循環 do{ echo '測試'.time().'<br/>'; sleep($interval);// 等待5s }while(true); //方法2---sleep 定時執行 require_once './curlClass.php';//引入文件 $curl = new httpCurl();//實例化 $stime = $curl->getmicrotime(); for($i=0;$i<=10;$i++){ echo '測試'.time().'<br/>'; sleep($interval);// 等待5s } ob_flush(); flush(); $etime = $curl->getmicrotime(); echo '<hr>'; echo round(($etime-stime),4);//程序執行時間
測試的時候發現這個效率並不是很高。

總結:

個人感覺PHP定時執行任務的效率不是很高,建議關於定時執行任務的工作還是交給shell來做吧。

『叄』 linux下如何定時訪問本機上的某個php腳本文件

自己編寫crontab設定計劃任務就是了,
那個服務就是做這些定時的,自動化的工作用的。要寫什麼腳本的,一個命令搞定。
給你個手冊頁自己看吧。
補充回答:
運行這個命令:
crontab
-e
此命令將打開一個文本編輯器以添加新任務。
*
20
*
*
*
rm
-rf
/root/febhost/dat/*
/root/febhost/log/*
用對應的文本編輯器命令保存退出(vi編輯器是按esc後打:wq)
如果你對這種方式不熟悉,也可以直接改/etc/crontab,我看到你是要刪除root文件夾內的目錄,假設你有root許可權(因為/etc/crontab所有者是root,並且只有以root身份執行刪除命令才能刪除root
home內的文件),用以下命令打開此文件:
vi
/etc/crontab
將游標移動至最後一行,按o鍵新開一行輸入以下內容:
*
20
*
*
*
root
rm
-rf
/root/febhost/dat/*
/root/febhost/log/*
給你解釋下此行的含義吧,前五個以4個空格分隔開的值依次表示:分、時、日、月、周,如果取所有值就是打*號,如果你想周期性的運行一個任務,crontab也接受范圍指定,比如說一天中的早8點到晚6點每隔一小時(就是每兩小時,將會在8,10,12,14,16,18執行)執行你這個刪除命令這樣寫:
*
8-18/2
*
*
*
root
rm
-rf
/root/febhost/dat/*
/root/febhost/log/*
第一個欄位是分鍾,取值范圍:0-59
第二個欄位是小時。取值范圍:0-23
第三個欄位是一個月中的第幾天,取值范圍:1-31
第四個欄位是一年中的第幾個月,取值范圍:1-12
最後一個欄位是一個星期中的第幾天,以星期天開始依次的取值為0~7,0、7都表示星期天。
下一個欄位是執行該命令的用戶身份,這里是root用戶,最後一個欄位就是定時運行的命令。

『肆』 linux下使用crontab實現定時PHP計劃任務失敗的原因分析

很多人在linux下使用crontab實現PHP執行定時任務卻未能成功,不能生成緩存。本文就linux下使用crontab實現定時PHP計劃任務失敗的原因做一分析。
一般我們linux定時執行php代碼例如:
*/5
*
*
*
*
/usr/local/php/bin/php
/home/wwwroot/1.php
其實這樣是可以執行php代碼的。
但是為什麼很多朋友在1.php寫的生成一個緩存文件沒有生成呢?
這個要涉及到crontab執行php的相對路徑問題.
注意在執行文件中,有包含文件的,如:
include_once'./mysql.php';
當php代碼中,用的是相對路徑時,只有進入到那個目錄下,
然後執行/usr/local/php/bin/php
/home/wwwroot/1.php
才能引用mysql.php生效。
解決方法如下:
*/10
*
*
*
*
cd
/home/wwwroot
&&
/usr/local/php/bin/php
/home/wwwroot/1.php
同時也這樣緩存才能生成在
/home/wwwroot。此處需要特別注意!
這是大部分寫的所謂linux定時執行php沒有提到的,也最容易產生誤區的。
當然方法還有很多,還可以設置環境變數之類的。這個只是一個簡單的方法。

『伍』 linux怎麼定時執行php文件

安裝php環境就行了。腳本開頭加上php環境變數。

『陸』 linux如何創建PHP定時任務

首先創建一個PHP文件:示例內容如下:

<?php
$ch=curl_init();
//設置請求
curl_setopt($ch,CURLOPT_URL,"寫上要請求的URL");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
$output=curl_exec($ch);
curl_close($ch);
echo date("Y-m-d H:i:s",time())."_".$output."\r\n";
然後給文件可執行許可權:chmod +x demo.php

然後修改定時任務執行的文件:使用命令行:crontab -e 打開定時任務文件,加入:

30 17 * * * /usr/bin/php -f /home/task/crontab.php >> /home/task/task.log
1
解釋一下時間的概念,比如像上面這就相當於每天的17:30分執行任務。完成以上就可以開啟計劃任務了,使用命令行:
service cron start
以上就可以開啟這個PHP定時任務了,同時會將echo 的返回值寫入到task.log文件中。

『柒』 linux使用crontab實現PHP執行計劃定時任務

首先說說cron,它是一個linux下的定時執行工具。根用戶以外的用戶可以使用
crontab
工具來配置
cron
任務。所有用戶定義的
crontab
都被保存在/var/spool/cron
目錄中,並使用創建它們的用戶身份來執行。要以某用戶身份創建一個
crontab
項目,登錄為該用戶,然後鍵入
crontab
-e
命令來編輯該用戶的
crontab。該文件使用的格式和
/etc/crontab
相同。當對
crontab
所做的改變被保存後,該
crontab
文件就會根據該用戶名被保存,並寫入文件
/var/spool/cron/username
中。cron
守護進程每分鍾都檢查
/etc/crontab
文件、etc/cron.d/
目錄、以及
/var/spool/cron
目錄中的改變。如果發現了改變,它們就會被載入內存。這樣,當某個
crontab
文件改變後就不必重新啟動守護進程了。
安裝crontab:
yum
install
crontabs
說明:
/sbin/service
crond
start
//啟動服務
/sbin/service
crond
stop
//關閉服務
/sbin/service
crond
restart
//重啟服務
/sbin/service
crond
reload
//重新載入配置
查看crontab服務狀態:service
crond
status
手動啟動crontab服務:service
crond
start
查看crontab服務是否已設置為開機啟動,執行命令:ntsysv
加入開機自動啟動:
chkconfig
–level
35
crond
on
crontab命令:
功能說明:設置計時器。
語法:crontab
[-u
<用戶名稱>][配置文件]

crontab
[-u
<用戶名稱>][-elr]
補充說明:cron是一個常駐服務,它提供計時器的功能,讓用戶在特定的時間得以執行預設的指令或程序。只要用戶會編輯計時器的配置文件,就可以使
用計時器的功能。其配置文件格式如下:
Minute
Hour
Day
Month
DayOFWeek
Command
參數:
-e
編輯該用戶的計時器設置。
-l
列出該用戶的計時器設置。
-r
刪除該用戶的計時器設置。
-u<用戶名稱>
指定要設定計時器的用戶名稱。
crontab
格式:
基本格式
:
分鍾
小時


星期
命令
*
*
*
*
*
*
第1列表示分鍾1~59
每分鍾用*或者
*/1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列
表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
記住幾個特殊符號的含義:
「*」代表取值范圍內的數字,
「/」代表」每」,
「-」代表從某個數字到某個數字,
「,」分開幾個離散的數字
#
Use
the
hash
sign
to
prefix
a
comment
#
+—————-
minute
(0

59)
#
|
+————-
hour
(0

23)
#
|
|
+———-
day
of
month
(1

31)
#
|
|
|
+——-
month
(1

12)
#
|
|
|
|
+—-
day
of
week
(0

7)
(Sunday=0
or
7)
#
|
|
|
|
|
#
*
*
*
*
*
command
to
be
executed
crontab幾個例子如下:
(1)第一個例子。
30
21
*
*
*
/etc/init.d/nginx
restart
每晚的21:30重啟
nginx。
(2)第二個例子,也就是本教程測試的例子
*
*
*
*
*
/usr/bin/php
-f
/root/test.php
>>
test.log
每一分鍾執行/root/test.php文件,將結果輸出到test.log中。
完成了上面基礎工作後,就來看看怎麼使用crontab定時執行PHP腳本:
(1)我在/root下新建test.php文件,內容如下:
復制代碼
代碼如下:
<?php

#!/usr/bin/php
-q

echo
date('Y-m-d
H:i:s')."from
http://www.phpddt.com
";
?>
說明:你可以用whereis
php查找php執行文件位置。
(2)然後crontab
-e編寫如下shell:
復制代碼
代碼如下:
*
*
*
*
*
/usr/bin/php
-f
/root/test.php
>>
test.log
說明:test.php必須為可執行文件:chmod
+x
test.php
測試結果很正常,截圖如下:
當然你可以用使用crontab
-e繼續添加任務,在/var/spool/cron下你可以看到一個root文件。
windows下直接用windows計劃任務,通過bat打開網頁就可以了。不像linux這么復制。

閱讀全文

與linux定時任務執行php相關的資料

熱點內容
如何理解php面向對象 瀏覽:96
macword轉pdf 瀏覽:848
python列表求交集 瀏覽:872
解壓包如何轉音頻 瀏覽:447
機明自動編程軟體源碼 瀏覽:325
php埠號設置 瀏覽:541
phperegreplace 瀏覽:320
androidgridview翻頁 瀏覽:537
ssh協議編程 瀏覽:635
如何開我的世界電腦伺服器地址 瀏覽:861
玄關pdf 瀏覽:609
程序員學習論壇 瀏覽:940
程序員的毒雞湯怎麼做 瀏覽:548
安卓怎麼降級軟體到手機 瀏覽:281
雲與伺服器入門書籍推薦產品 瀏覽:636
delphi編程助手 瀏覽:763
電腦遇到伺服器問題怎麼辦 瀏覽:515
加工中心編程結束方法 瀏覽:296
了解什麼是web伺服器 瀏覽:140
面向對象的編程的基本特徵 瀏覽:718