php执行cmd脚本超时,不能去改ini因为超时期间页面一直在等待,怎么才能让他后台运行?我使用的是sys函数,另外的几个也不行
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ä¸é»è®¤èæ¬æ§è¡è¶ æ¶æ¶é´ä¸º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页é¢æ¶å°±æ¯è¿æ ·å
温馨提示:答案为网友推荐,仅供参考