2014-01-21 3 views
0

У меня возникли проблемы с циклом этого скрипта через большую базу данных из 1 м + элементов. Сценарий возвращает размер изображения в байтах от его url и вставляет результат в базу данных.Ошибка php-while в большом наборе данных

Я получаю ошибку браузера Error code: ERR_EMPTY_RESPONSE на моей пробной попытке. Это не сулит ничего хорошего. Я пытаюсь пропустить слишком много записей с циклом while? Любые методы для исправления?

<?php 

error_reporting(E_ALL); 

mysql_connect('xxxx', 'xxxx', 'xxxx') or die("Unable to connect to MySQL"); 
mysql_select_db('xxxx') or die("Could not select database"); 

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

if (mysql_num_rows($result)) { 
    while ($row = mysql_fetch_array($result)) { 
     $ch = curl_init($row['bigimg']); 

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($ch, CURLOPT_HEADER, TRUE); 
     curl_setopt($ch, CURLOPT_NOBODY, TRUE); 

     $data = curl_exec($ch); 
     $info = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 

     curl_close($ch); 

     mysql_query("UPDATE items SET imgsize = '" . $info . "' WHERE id=" . $row['id'] . " LIMIT 1"); 
    } 
} 
?> 
+2

Прежде всего, функции 'mysql_ *' теперь устарели. Посмотрите на MySQLi или PDO. Во-вторых, кто захочет зациклиться на 1 м + записи и cURL запросить их все? – BenM

+0

Почему вы не можете попробовать 'shell_exec()' для операций завивки? –

+0

Итак, вы хотите сделать индивидуальные HTTP-запросы «1m +» в одном скрипте ...? – CBroe

ответ

0

Я думаю, что ваша проблема может быть связана с тем, что вы пытаетесь вызвать everytime curl_exec. Возможно, вы захотите изменить свой код на 2 части: сначала извлеките данные из базы данных, а затем вызовите завитки.

+0

Тогда у него было бы две петли, а не одна. – Ryan

+0

кажется лучше, так как у него много накладных расходов с завиванием (время отклика и т. Д.) – Bogdan

+0

Но почему это изменилось бы путем хранения данных базы данных в одном цикле, а затем цикла вокруг массива, который вы только что создали во втором цикле? Если что-то все, что будет делать, это увеличить накладные расходы в PHP. – Ryan

Смежные вопросы