Büyük MySQL Query zamanaşımı

3 Cevap php

Bu kodu vardır:

$theQuery = mysql_query("SELECT phrase, date from wordList WHERE group='nouns'");
while($getWords=mysql_fetch_array($theQuery)) {
 echo "$getWords[phrase] created on $getWords[date]<br>";
}

Sorgu 75,000 sonuçlar var, ve ben kodu çalıştırmak her zaman bir hata alıyorum.

3 Cevap

Çeşitli konularda php.ini ayarları nedeniyle bütün bunlar, burada etkili olabilir. Script betik çalıştırma 30 saniye maksimum PHP varsayılan beri zamanlama olabilir. Diğer nedeni (ve sadece büyük olasılıkla gibi) komut dosyası yürütme başına 8MB için varsayılan bir betik bellek sınırı vuruyorlar olmasıdır.

Açık php.ini ve "Kaynak Sınırları" için arama ve uygun değişiklikleri yapın.

Bir tahmin olarak ben değil (senin başlıktan) sonuçlarını yankılanan daha MySQL sorguda zamanlama dışarı derim

Eğer MySQL masada grup sütun üzerinde bir dizin ayarı denediniz mi? Bu ekler select büyük bir fark yapmak gerekir yavaş olacaktır.

Bkz http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

php.ini iyi bir ilk adımdır ama size çalışacak bir şey için bu ayarları değiştiremezsiniz bir sunucuda kendinizi bulabilirsiniz. Bu durumda size parçalar ne yaptığınızı kırmak için mantıklı olabilir.

Bu çıkış için ise Örneğin, sen LIMIT kullanarak bir seferde 25.000 sonuçlarını çalıştırabilir. Bir dosyaya çıktı sopa ve sonra sadece çıkış için dosyayı kullanın. Dosyanızı bir cron ile taze kalmak için çıktı gerekiyorsa ne olursa olsun bir kez gece / saat / güncelleyebilirsiniz.