2010-01-12 5 views
2

Как я могу динамически изменять тайм-аут соединения MySqli с помощью PHP? Я нашел следующее руководство, которое вы можете установить опцию после того, как соединение открыто, но он говорит, что поддерживает только Windows, начиная с PHP 5.3.1:динамически изменить таймаут соединения mysqli в PHP

http://www.php.net/manual/en/mysqli.options.php

Я использую PHP5.2.4, MySQLi (улучшенный версия)

Время ожидания соединения по умолчанию составляет 20 секунд в my.cnf, но в специальном php-скрипте я хотел бы установить его выше, чем за 500 секунд до истечения времени ожидания.

+0

Ручной ввод немного неоднозначным в моем сознании. Это может означать, что это работает повсюду, но в Windows только с PHP 5.3.1 или выше. Вы на машине Linux? Вы можете попробовать? –

ответ

2
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 500) 

manual

Однако, делая соединение с PHP для MySQL НЕ ресурсоемкий. ИМХО, лучше иметь меньший тайм-аут и делать несколько соединений. Это позволит освободить соединения для других процессов.

+1

Его проблема (насколько я понимаю) заключается в том, что это не будет работать на его сервере Windows, потому что он использует PHP <5.3.0. –

+1

Согласен, все мои обычные соединения подпадают под 20-секундный тайм-аут. но этот конкретный скрипт требует много времени для запуска, а иногда и бездействует mysql-соединение долгое время, поэтому мне нужно более длинное соединение только для этого скрипта. – Beier

+0

@Yada. Почему вы публикуете решение, о котором уже заявили, что он не работает? Как мы можем заставить его работать в Windows Pacerier

1

Мне очень жаль путаницы, но я использую сервер Linux, а не Windows. Я неправильно понял комментарий в PHP docs«поддерживается в Windows с TCP/IP с PHP 5.3.1», я думал, что это означает, что опция поддерживается только на сервере Windows.

ОК, так

$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 500); 

будет работать отлично для меня.

Благодаря

+1

Редактировать свой вопрос и разместить то, что вы разместили здесь, там :) – AntonioCS

+0

Почему вы опубликовали два ответа на эту тему ?! Вы должны «объединить» их и удалить один из них. – Sk8erPeter

1

правильное решение для MySQLi прямо после того, как соединение открывается, выдает следующий запрос, чтобы изменить session.wait_timeout на дольше:

SET @@session.wait_timeout=500