[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Установка времени ожидания ответа php, mysql
Гость_Елена
Здравствуйте.
У меня запрос длится 5 минут, нужно дождаться обязательно, а пхп его обрывает на 60 секундах.
Итого для mysql я нашла php.ini файл, установила там mysql.connect_timeout в 3600 секунд (было 60), но как ждало до этого 60 так и осталось.
Функция ini_set(old,new) возвращает старое значение. Так вот сколько не устанавливай, все равно возвращается то что находится в ини файле, например 3600.
Запрос же все равно ждет 60 с.

Для mysqli нашла функцию options - тоже самое, не работает ждет ровно 60 с.

Еще есть последний параметр в функции connect: можно установить флаг MYSQLI_CLIENT_INTERACTIVE, который что то там делает с wait_timeout и interactive_timeout, а эти константы находятся в MySql, т.е. влияют на то, сколько будет СУБД ждать клиента, а мне надо сколько будет клиент ждать СУБД.

Вообщем, попробую еще объектно обратится к mysqli (обращалась до сих пор процедурно), а так больше ничего в голову не приходит.

Еще пробовала ini файл в папки dev и ext копировать по одному совету, то же самое результата никакого.

версия PHP 5.3 win 32, windows xp

Спасибо



Спустя 1 час, 31 минута, 7 секунд (18.10.2009 - 12:35) sergeiss написал(а):
Запрос к БД длится 5 минут??? Можно, конечно, "поиграться" с тайм-аутами... Но для начала надо уменьшить реальное время запроса. То есть, надо оптимизировать работу с БД.
Покажи сам запрос, подумаем, что с ним можно сделать.
Также покажи структуру таблиц, используемых в запросе, и по каким полям сделаны индексы.

Спустя 36 минут, 8 секунд (18.10.2009 - 13:11) Guest написал(а):
У меня задача такая: доказать что имеет смысл разрабатывать орм-библиотеку, которая обеспечивает соединение сразу всех нужных таблиц. В моем случае шести. Таких библиотек нет. При таком соединении идет огромное дублирование данных, у меня в 72 раза: вместо 31.7 кБ 21.46 МБ. Вот я написала процедуру обнуляющую все нагрузочные поля, если первичный ключ уже встречался раньше в таблице.
Вот эта вот процедура длится 5 минут. Есть соображение, что можно написать эту процедуру на С или вообще написать особое соединение LIGHT JOIN. Т.е. здесь надежды есть.
Самое главное что сокращается время запроса готовых результатов, так что оно меньше (где-то в три раза на расстоянии 15 метров ethernet и 5 метров wifi) чем если загружать все данные по отдельности (что предлагают существующие орм-библиотеки): у меня 135 запросов вместо одного.
Вот.

Спустя 7 минут, 10 секунд (18.10.2009 - 13:18) Guest написал(а):
А это дублирование этого сокращения не дает, наоборот вместо 0.3 секунд многих запросов запрос длится 6 с, из них на генерацию таблицы 1 с.
Время я на память привожу конечно.
Эта секунда генерации сложной таблицы еще настораживает, конечно, но вообщем, если расстояние сделать километры - то может смысл и есть.
И БД не на 6 страниц а на 20.
БД в скобках количество записей:
t1 (5): t1.i, t1.a, t1.b,
t2 (100): t2.i, t2.t1, t2.a,
t3 (1000): t3.t2, t3.t4, t3.a,
t4 (10): t4.i, t4.a, t4.b,
t5 (100): t5.t4, t5.t6, t5.a,
t6 (10): t6.i, t6.a, t6.b.
a, b -нагрузочные строки по 250 байт.
i - первичный ключ
остальное - внешние ключи
В запросе на 6 таблиц 10000 строк

Спустя 2 минуты, 55 секунд (18.10.2009 - 13:21) Guest написал(а):
пардон опечатка: 6 страниц - 6 таблиц я хотела

Спустя 13 минут, 20 секунд (18.10.2009 - 13:34) Гость_Елена написал(а):
Т.е. мне этот таймаут нужен для тестов, я должна привести конкретно время (доказательства), что вот смысл есть, только если разработать эту процедуру на С.

В целом извернуться можно, но для красоты надо.

Мне сервер доступен только который на моем компе, вот на нем я и вижу что пять минут, остальные тестируемые серверы (пока одна упомянутая штука, потом будет другая - около 10 км) мне не доступны кроме как через пхп, т.е. что я там приведу я не знаю, просто наугад или так и писать: не найден был способ таймаут увеличить.

Спустя 2 часа, 39 минут, 30 секунд (18.10.2009 - 16:14) Гость_Елена написал(а):
Так ну я таблицы где у меня уже встреченные идентификаторы хранятся (для процедуры созданные) проиндексировала (первичными ключами обозначила), вроде чуть-чуть поменьше стало. (секунд на 20).

А вообще решение такое ph34r.gif : после разрыва соединения каждые 10 секунд спрашиваю: сколько строк набралось? если меньше 10000, то опять жду 10 секунд и опять. Точность: ошибка не более 10 секунд при 4 минутах 50 секундах, вполне себе. При том что я дополнительную нагрузку на сервер сделала. Ну это ладно.

Но если кто-то что-то понимает, прошу все-таки ответить, как сделать чтобы запрос ждал, я точно не помню где, но где то я уже встречала что set_ini не работает, а запрос ждет фиксированное время (там было 20 секунд, а у меня 60).

Спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.