當前位置:首頁 » 編程語言 » php等待

php等待

發布時間: 2023-07-22 06:24:24

php 隊列等待問題。高分懸賞

php 中是有Thread這個擴展類的 這個就是支持隊列安裝我不說了

<?php
classTextThreadextendsThread{
public$url;
public$data;
publicfunction__construct($url){
$this->url=$url;
}

publicfunctionrun(){
$this->data=curlGet($this->url);
}
}

//獲取信息
functioncurlGet($url){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$data=curl_exec($ch);
curl_close($ch);
return$data;
}

//
functioncreateThread($urlArray){
$threadDataArray=array();
foreach($urlArrayas$key=>$val){
$threadArray[$key]=newTextThread($val);
$threadArray[$key]->run();
}
foreach($threadArrayas$key=>$thread){
while($thread->isRunning()){
usleep(100);
}
if($thread->join()){
$threadDataArray[$key]=$thread->data."====".$key."<br/>";
}
//var_mp($thread->join());
}
return$threadDataArray;
}

for($i=0;$i<=100;$i++){
$url='http://newyibo.com/Index/getThread';
$urlArray[]=$url;
}
$t=microtime(true);
$data=createThread($urlArray);
$e=microtime(true);
var_mp($data);
echo"多線程:".($e-$t)."<br/>";

這是我原來研究的的一個例子,僅供參考

貌似這個還有一個Event擴展類也有關系,這個沒研究過

⑵ 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頁面時就是這樣做

熱點內容
解壓包手機安裝 發布:2025-02-08 00:49:29 瀏覽:954
詹雯婷訪問 發布:2025-02-08 00:42:02 瀏覽:309
php無限分類樹 發布:2025-02-08 00:42:01 瀏覽:814
clang編譯命令 發布:2025-02-08 00:41:24 瀏覽:127
數據結構c語言版演算法 發布:2025-02-08 00:28:19 瀏覽:663
python環境管理 發布:2025-02-08 00:26:51 瀏覽:999
個人簡歷源碼 發布:2025-02-08 00:26:43 瀏覽:14
html5canvas上傳圖片 發布:2025-02-08 00:20:44 瀏覽:169
安卓輸入法哪個詞庫好 發布:2025-02-08 00:03:47 瀏覽:92
c存儲過程數據集 發布:2025-02-08 00:03:42 瀏覽:925