У меня проблемы с отладкой сбойной вставки mysql 5.1 под PHP 5.3.4. Кажется, я ничего не вижу в журнале ошибок mysql или php.
Основываясь на презентации Yahoo по эффективной разбивке по страницам, я добавлял номера заказов на плакаты на моем сайте (рейтинг заказов, а не продажи заказов).
Я написал приложение для быстрого тестирования и попросил создать номера заказов для одной категории. В этой категории 32 233 строки, и каждый раз, когда я запускаю ее, я обновляю 23 304 строки. Каждый раз. Я увеличил использование памяти, я вставил в скрипт параметр ini, я запускаю его из PHP CLI и PHP-FPM. Каждый раз, когда он не обновляет 23 304 строки.
Вот мой сценарий, к которому я добавил огромные тайм-ауты.
include 'common.inc'; //database connection stuff
ini_set("memory_limit","300M");
ini_set("max_execution_time","3600");
ini_set('mysql.connect_timeout','3600');
ini_set('mysql.trace_mode','On');
ini_set('max_input_time','3600');
$sql1="SELECT apcatnum FROM poster_categories_inno LIMIT 1";
$result1 = mysql_query($sql1);
while ($cats = mysql_fetch_array ($result1)) {
$sql2="SELECT poster_data_inno.apnumber,poster_data_inno.aptitle FROM poster_prodcat_inno, poster_data_inno WHERE poster_prodcat_inno.apcatnum ='$cats[apcatnum]' AND poster_data_inno.apnumber = poster_prodcat_inno.apnumber ORDER BY aptitle ASC";
$result2 = mysql_query($sql2);
$ordernum=1;
while ($order = mysql_fetch_array ($result2)) {
$sql3="UPDATE poster_prodcat_inno SET catorder='$ordernum' WHERE apnumber='$order[apnumber]' AND apcatnum='$cats[apcatnum]'";
$result3 = mysql_query($sql3);
$ordernum++;
} // end of 2nd while
}
Я в головокружительной потере. Только что сделал тест на меньшую категорию, и только 13 199 из 17 662 строк были обновлены. Для двух экспериментов обновляется только 72-74% строк.