當前位置:首頁 » 編程軟體 » php腳本運行時間

php腳本運行時間

發布時間: 2024-06-28 17:08:20

① 如何使用linux的Crontab定時執行php腳本的方法

*/1 * * * * /usr/local/php/bin/php /home/wwwroot/clewx/web/linux.php Crontab Dingdian op 14186

這是我伺服器上的crontab粘貼給你了。

1、*/1是代表每分鍾。

2、/usr/local/php/bin/php 是php腳本。意思就是拿PHP去執行,跟拿迅雷下載東西一個道理,都是需要指定一個東西去執行。

3、/home/wwwroot/clewx/web/linux.php 是php程序

4、Crontab Dingdian op 14186 是4個參數,因為我的程序是MVC的,所以執行的是Crontab模塊的Dingdian控制器的op方法,14186是一個參數

5、上linux.php代碼,直接使用$argv可以接收參數

$_GET['m']=$argv[1];
$_GET['c']=$argv[2];
$_GET['a']=$argv[3];
$_GET['id']=$argv[4];

② 如何使用Linux的Crontab定時執行PHP腳本的方法

鍵入 crontab
-e 編輯crontab服務文件
------------------------------------------Ubuntu中的linux---------------
安裝lynx包:apt-get isntall lynx
先寫ln.sh腳本:lynx http://10.11.12.49/data_task.php

設置定時:crontab -e
0 1 * * * bash /var/www/test/ln.sh
-------------------------------------------------------------------------
分為兩種情況:
第一種情況:你的php腳本中沒有引入其他PHP文件,也就是說沒有include,require_once等命令的PHP文件
* */1 * * * /usr/local/php/bin/php
/var/www/html/wwwroot/web/script.php (每一小時執行一次script.php)
注意,這樣寫需要把PHP變成可執行的腳本文件。在命令行下,腳本所在目錄
chmod +x script.php
注意:你的script.php文件中一定要在開始處加上: #!/usr/local/php/bin/php -q
,下面是一個完整的script.php文件代碼
<?php
#!/usr/local/php/bin/php -q
session_start();
define( "DB_PASSWORD", "111111" ); // 伺服器登陸密碼
define( "DB_NAME", "db_shopping" ); // 資料庫名稱
define( "DB_USER", "root" ); // 伺服器登陸用戶
define( "DB_HOST", "127.0.0.1" ); // 伺服器IP地址或名稱
define( "DB_PORT", "3306" ); // 伺服器登陸埠號
define( "DB_CHARSET", "utf8" ); // 資料庫默認語言
define( "DB_DEBUG", false ); // 是否設置為調試模式
define( "DB_CLOSE", false ); // 是否主動關閉資料庫連接
$con=mysql_connect(DB_HOST.":".DB_PORT,DB_USER,DB_PASSWORD);
mysql_query ( "SET character_set_connection = ".DB_CHARSET.",
character_set_results = ".DB_CHARSET.", character_set_client =
binary");
if (!$con) die("Mysql Error:".mysql_error());
mysql_select_db(DB_NAME,$con);
//$dates=date()

$sqll="insert into test(NAME,Sex,thisdate,state)
values('love','0','2011-08-11','1')";
$resl=mysql_query($sqll);
echo "成功...";
?>

/usr/local/php/bin/php的意思是:用/usr/local/php/bin/目錄中的php.exe文件來執行
/var/www/html/wwwroot/web/script.php

第二種情況:你的php腳本中有引入其他PHP文件,也就是說有用到include,require_once命令的PHP文件(先寫shell腳本)
上面的方法有一個問題:當script腳本中有include文件時,腳本根本找不對PHP的路徑,php將會在/bin/local/php目錄下找文件,當然找不到。
所以,遇見這種情況,按照下面的方法做:
在終端上輸入如下命令得到sh 和 lynx 程序的路徑:
whereis sh
whereis lynx
or
which sh
which lynx
隨便輸入一個,其中便會返回你要的路徑。如果你的系統里沒有lynx,試試links,w3m,或者
links2,這些是其它的文本模型瀏覽器。這些瀏覽器將會運行你的腳本。
然後你需要創建一個sh文件,用它來調用php文件,通過lynx。假設你的伺服器已經安裝了lynx,sh路徑為
/bin/sh,lynx路徑為 /usr/local/bin/lynx
#!/bin/sh
/usr/local/bin/lynx -source
http://www.yoursite.com/folder/script.php
注意感嘆號
把這個腳本保存為cron-lynx.sh
保存到一個你找得到的地方,比如:

你可以把它放在網站根目錄。
然後再創建一個script.php的文件。當cron運行的時候,將會通過lynx來調用它。這個文件可以通過瀏覽器來訪問

然後編輯主機的crontab,像下面這樣。
*/1 * * * * root /bin/sh
/usr/www/yourdirectory/sh_scripts/cron-lynx.sh
在/bin/sh 和 /usr 間有空格。就這樣就設好了,還有一點要注意的是,你的sh文件和php文件都正確無誤。

===================================================================================

linux下的crontab服務:
1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
在linux平台上如果需要實現任務調度功能可以編寫cron腳本來實現。
以某一頻率執行任務
linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
1.
crontab
2.
cron.d
3.
cron.daily
4.
cron.hourly
5.
cron.monthly
6.
cron.weekly

如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab
或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh

2、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這個服務已經在進程裡面了,我們就可以用這個服務了

查看服務是否已經運行用 ps -ax | grep cron

3、crontab命令

查看該用戶下的crontab服務是否創建成功, 用 crontab -l
命令
命令 which php 查看linux下安裝的php的路徑
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命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。

crontab命令選項:

-u指定一個用戶

-l列出某個用戶的任務計劃

-r刪除某個用戶的任務

-e編輯某個用戶的任務

4、cron文件語法:


小時


星期
命令

0-59
0-23
1-31
1-12
0-6
command
(取值范圍,0表示周日一般一行對應一個任務)

記住幾個特殊符號的含義:

「*」代表取值范圍內的數字,

「/」代表」每」,

「-」代表從某個數字到某個數字,

「,」分開幾個離散的數字

5、任務調度設置文件的寫法

可用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參數表示,執行後面目錄中的所有可執行文件。 ]

6、 新增調度任務

新增調度任務可用兩種方法:

1)、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。

2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。

7、 查看調度任務

crontab -l //列出當前的所有調度任務

crontab -l -u jp
//列出用戶jp的所有調度任務

8、 刪除任務調度工作

crontab -r //刪除所有任務調度工作

9、 任務調度執行結果的轉向

例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執行cmd腳本超時,不能去改ini因為超時期間頁面一直在等待,怎麼才能

PHP腳本執行超時的解決辦法

在php中默認腳本執行超時時間為30秒了,如果未進行設置30秒之後如果你的腳本還未執行完就會超時了,下面我來給大詳解解決PHP腳本執行超時的方法。
php.ini 中預設的最長執行時間是 30 秒,雖然可以通過調整 php.ini 中 max_execution_time的值來達到目的,但有些情況是沒有條件修改php.ini的,如何解決這個問題呢。
一種方法是在 PHP 腳本中加入
代碼如下
ini_set('max_execution_time', '0');
將運行時間設置成0(無限值);
另一種方法是在命令行下執行腳本,使用命令行執行腳本時,最大運行時間被設置為了無限值。
修改php.ini的腳本執行時間限制
編輯php.ini,修改max_execution_time值:
代碼如下
max_execution_time=500
//此修改需要重新載入php.ini,需要重啟web伺服器生效。
通過.htaccess 文件設置腳本執行時間
代碼如下
php_value max_execution_time 500
在腳本中設置執行的最大時間
代碼如下
ini_set('max_execution_time', 500);
用php的函數取消腳本的時間限制
代碼如下
set_time_limit(0);
set_time_limit用來設置腳本的超時時間,此函數規定從該句運行時起程序必須在指定秒數內運行結束,超時則程序出錯退出。
下面是一個例子. 有10000條數據, 要修改其中某些數據, 運用PHP分步執行處理, 代碼如下:
action.php
代碼如下
<?php
$stid = isset($_GET['stid'])?$_GET['stid']:0;
$endid = $stid + 100;
$maxid = 10000;
function dosomething(){
//要時間比較多的操作
……
}
$sql_string=」select * from `table` where id>』$stid』 and id<=』$endid』 order by id」;
$datas = getdata_bysql($sql_string);
foreach($datas as $data){
//處理數據
…..
echo $id.」 處理完成. <br />」;
if($id>=$maxid){exit;}
}
if($stid<=$maxid){
$stid = $stid + 100;
$url=」action.php?stid=$stid」;
echo $url;
echo 『<script language=」javascript」>location=」『.$url.』」; </script>』;
}
?>
其中的dosomething()是一個耗時操作. 這里我們通過限制id范圍來減少運行時間, 運行完後通過javascript的跳轉來自動運行下一步
現在dedecms生成html頁面時就是這樣做

④ 怎樣定時執行某個PHP腳本文件,帶參數,沒有伺服器許可權,虛擬主機用戶 - 技術問答

1樓的,要是每天的2點鍾定時執行某個腳本。又該怎麼做呢??ignore_user_abort。。。。我要定時執行某個文件,而不是執行ignore_user_abort這個函數所在的那個php腳本

⑤ 如何使用Linux的Crontab定時執行PHP腳本的方法

寫好要執行的PHP文件
然後使用Crontab 對應的時間格式等進行執行即可
linux crontab&每隔10秒執行一次 linux下定時執行任務的方法
=============CRONTAB執行PHP文件============
原理:Crontab sleep結合實現每N秒執行文件,延時方法 sleep N
注意:
60必須能整除間隔的秒數(沒有餘數),例如間隔的秒數是2,4,6,10,12等。
如果間隔的秒數太少,例如2秒執行一次,這樣就需要在crontab 加入60/2=30條語句。不建議使用此方法,可以使用下面介紹的第二種方法。
在LINUX中你應該先輸入crontab -e,
然後就會有個vi編輯界面,
再輸入0 3 * * 1 /clearigame2內容到裡面
:wq 保存退出。
在LINUX中,周期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]。
cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。
cron的配置文件稱為「crontab」,是「cron table」的簡寫。
一、cron在3個地方查找配置文件:
1、/var/spool/cron/ 這個目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名,比如tom建的crontab任務對應的文件就是/var/spool/cron/tom。
一般一個用戶最多隻有一個crontab文件。
二、/etc/crontab 這個文件負責安排由系統管理員制定的維護系統以及其他任務的crontab。
三、/etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。
四、許可權
crontab許可權問題到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果兩個文件都不存在,則只有root用戶才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,則只有列在cron.allow文件里的用戶才能使用crontab命令,如果root用戶也不在裡面,則root用戶也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,則只有列在cron.deny文件裡面的用戶不能使用crontab命令,其它用戶都能使用。
4、如果兩個文件都存在,則列在cron.allow文件中而且沒有列在cron.deny中的用戶可以使用crontab,如果兩個文件中都有同一個用戶,
以cron.allow文件裡面是否有該用戶為准,如果cron.allow中有該用戶,則可以使用crontab命令。
在crontab文件中如何輸入需要執行的命令和時間。該文件中每行都包括六個域,其中前五個域是指定命令被執行的時間,最後一個域是要被執行的命令。
每個域之間使用空格或者製表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要執行的腳本)
除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值范圍內的數字,"/"代表每的意思,"/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。
基本格式 :
*****command
分 時 日 月 周 命令
第1列表示分鍾1~59 每分鍾用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
crontab文件的一些例子:
#每晚的21:30重啟apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * mon-wed date
#1月份日早上4點
0 4 1 jan * date
很多時候,我們計劃任務需要精確到秒來執行,根據以下方法,可以很容易地以秒執行任務。
以下方法將每10秒執行一次#執行PHP文件
# crontab -e
* * * * * php /www/web/test.php
* * * * * sleep 10; php /www/web/test.php
* * * * * sleep 20; php /www/web/test.php
* * * * * sleep 30; php /www/web/test.php
* * * * * sleep 40; php /www/web/test.php
* * * * * sleep 50; php /www/web/test.php
每5秒執行一次
* * * * * for i in `seq 120`; do awesome_scripts& sleep 0.5; done
===================執行腳本==================
原理:每分鍾執行腳本,使用for語句循環實現每N秒執行文件
注意:如果60不能整除間隔的秒數,則需要調整執行的時間。例如需要每7秒執行一次,就需要找到7與60的最小公倍數,7與60的最小公倍數是420(即7分鍾)。
1.vim crontab1.sh
#!/bin/bash

step=2 #間隔的秒數,不能大於60

for (( i = 0; i < 60; i=(i+step) )); do
$(php '/www/web/test.php')
sleep $step
done

exit 0
2.crontab -e 執行腳本 每分鍾執行
# m h dom mon dow command
* * * * * /home/php/crontab/crontab.sh
每7分鍾執行一次,60*7 = 420,則循環的時候循環最大是420;則 crontab.sh step的值為7,循環結束條件i < 420, crontab -e可以輸入以下語句來實現
# m h dom mon dow command
*/7 * * * * /home/php/crontab/crontab.sh

熱點內容
php數組轉化為字元串 發布:2024-07-01 02:33:41 瀏覽:664
無法登錄ftp 發布:2024-07-01 02:27:23 瀏覽:479
怎麼把文件放到安卓模擬器中 發布:2024-07-01 02:21:46 瀏覽:475
ubuntu怎麼編譯c文件 發布:2024-07-01 02:21:39 瀏覽:773
oppo最高配置的手機是哪個 發布:2024-07-01 02:21:07 瀏覽:925
linux工作路徑 發布:2024-07-01 02:09:06 瀏覽:357
百錢買百雞c語言 發布:2024-07-01 02:09:04 瀏覽:752
雲伺服器ip如何設置成自己的格式 發布:2024-07-01 01:58:09 瀏覽:930
linux行尾 發布:2024-07-01 01:53:49 瀏覽:917
linux下配置nginx 發布:2024-07-01 01:48:34 瀏覽:678