В скрипте приходится формировать 10 селектов с выборкой данных из таблицы. Записей в таблице больше 1000. Делаю так. PHP: // Формирую все селекты $sql2 = mysql_query("SELECT name FROM $table3 ORDER BY name " ,$db); $select1 = '<select name="f1" ><option selected></option>'; $select2 = '<select name="f2" ><option selected></option>'; $select3 = '<select name="f3" ><option selected></option>'; $select4 = '<select name="f4" ><option selected></option>'; $select5 = '<select name="f5" ><option selected></option>'; $select6 = '<select name="f6" ><option selected></option>'; $select7 = '<select name="f7" ><option selected></option>'; $select8 = '<select name="f8" ><option selected></option>'; $select9 = '<select name="f9" ><option selected></option>'; $select10 = '<select name="f10" ><option selected></option>'; $select = ''; while($product = mysql_fetch_array($sql2)) $select .= '<option value='.$product['name'].'>'.$product['name'].'</option>'; $select1 .= $select.'</select>'; $select2 .= $select.'</select>'; $select3 .= $select.'</select>'; $select4 .= $select.'</select>'; $select5 .= $select.'</select>'; $select6 .= $select.'</select>'; $select7 .= $select.'</select>'; $select8 .= $select.'</select>'; $select9 .= $select.'</select>'; $select10 .= $select.'</select>'; // Вывожу селекты echo(" <td><div style=\"width:90px; overflow:hidden;\">".$select1."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select2."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select3."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select4."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select5."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select6."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select7."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select8."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select9."</div></td> <td><div style=\"width:90px; overflow:hidden;\">".$select10."</div></td> "); Происходит всё крайне долго. Иногда попытка вылетает с ошибкой Fatal error: Maximum execution time of 30 seconds exceeded in ... Как то можно это оптимизировать ? Повторюсь, записей в таблице больше 1000.
варианты такие: - апдэйтить железо - оптимизить систему/apache/mysql/php настройками - увеличить время выполнения скрипта из более гуманного: - генерить не автоматически, кэшировать (если возможно конечно) - грамотная индексация базы под запрос - LIMIT может быть (если знаешь максимальное количество возможно-отдоваемого) - mysql_fetch_row вместо _array (слышал, что работает несколько быстрее, хотя вряд ли поможет, мелочь точно) ---------- странно на самом деле, что дохнет. не миллион записей же. на какой строке происходит смерть скрипта? что в скрипте до этого и что после этого?
Какой мудак станет читать все 1000 вариантов выбора, дабы выбрать правильный вариант? Во вторых, т.к. во всех селектах все варианты выбора одинаковые, почему бы не сделать мульти селект? - в 10 раз меньше объём сразу будет...