簡體   English   中英

PHP Foreach循環速度

[英]PHP Foreach Loop Speed

我正在嘗試列出40,000個項目並為每個項目運行json請求。 我懷疑這個過程非常緩慢,因為每個json請求在下一個請求開始之前就已經完成。

$result = mysql_query("SELECT * FROM $tableName");

while($row = mysql_fetch_array($result))
{
 checkRank($row['Domain']);
}

checkRank正在運行某種效果:

$json = file_get_contents($jsonurl,0,null,null);

我以為我可以一次運行10個checkRanks來加快過程? 還有其他想法/建議嗎?

更新:

例如,此循環在27秒內遍歷了我的數組。

for ($i=0; $i<=100; $i++) {
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
echo "checking " . $i . "<br/>";

}

使用同一陣列,下面的循環需要40秒鍾以上。

for ($i=0; $i<=100; $i++) {
checkRank($domains[$i]);
echo "checking " . $i . "<br/>";

}

除非您沒有提到其他事情,否則最好的方法是執行一個JSON請求並將您的項目傳遞給它,然后返回相等數量的結果。 這樣,您可以最大程度地縮短服務器響應時間。 我不確定是否要發送40,000個項目,您可能希望將其分為2個部分,但是以后可以進行測試。

所以你的checkRank()看起來像

function  checkRank($domainsArray) {
$json = file_get_contents($jsonurl,$domainsArray);
}

不知道這是否會有所幫助,因為我不使用PHP,但是確實找到了。

如何在PHP應用程序中使用多線程

...很可惜,我今天在Stack Overflow上讀到PHP無法支持線程,因為它需要對語言進行根本性的更改...

https://github.com/krakjoe/pthreads

http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/

這似乎是加快處理速度的好方法。 感謝所有輸入人員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM