Mysql
 sql >> база данни >  >> RDS >> Mysql

PDO на PHP игнорира опцията ATTR_TIMEOUT за MySQL, когато сървърът не може да бъде достигнат

Просто поставете

ini_set("default_socket_timeout", 2);

преди вашия PDO() низ за свързване.

(Тестван на Windows, трябва да е добре и в Linux.)

Защо?

Преследване на това чрез ръководството:

Драйверът на mysqlnd използва сокети за основната връзка и за да зададете изчакване, трябва да използвате функциите за изчакване на сокет (поток). (Реф:http://php.net/manual/en/mysqlnd.notes. php )

Ако искате повече контрол, тогава може да сте в състояние да контролирате по-конкретно действителния сокет:не съм тествал това, тъй като е само unix. За да зададете сокета, който mysqlnd използва, можете да посочите сокета, като използвате ini настройките (Ref:http://php.net/manual/en/ref.pdo-mysql.connection.php )

Вижте http://php. net/manual/en/ref.pdo-mysql.php#ini.pdo-mysql.default-socket за тази настройка

След това може да сте в състояние да зададете времето за изчакване, като използвате http://php .net/manual/en/function.stream-set-timeout.php

Но вероятно е по-лесно да зададете по подразбиране и след това да нулирате, след като сте готови...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mariadb Regexp някога се връща празен в съхранената процедура

  2. MySQL дърво, подредено от родител и дете

  3. Как да изчислим сумата на колона в SQL таблица за дадена дата и да коригираме пропуснатите стойности с тези от най-близката предишна дата?

  4. PHP извиквания на множество обектни функции

  5. MySQL заявка за търсене в поле с JSON низ