Heim >Backend-Entwicklung >PHP-Problem >PHP-MySQL-Timeout-Einstellungsmethode

PHP-MySQL-Timeout-Einstellungsmethode

藏色散人
藏色散人Original
2020-07-23 09:42:443612Durchsuche

php MySQL-Timeout-Einstellungsmethode: Überprüfen Sie zuerst den Quellcode von MySQL und rufen Sie dann direkt die tatsächlichen Werte von „MYSQL_OPT_READ_TIMEOUT“ und „MYSQL_OPT_WRITE_TIME“ auf.

PHP-MySQL-Timeout-Einstellungsmethode

Legen Sie das Timeout für die PHP-Verbindung zu MySQL fest.

Das Timeout für die PHP-Verbindung zu MySQL kann in drei Bereiche unterteilt werden Typen:

连接超时
读超时
写超时

Da PHP derzeit über zwei Verbindungsmethoden verfügt, um eine Verbindung zu MySQL herzustellen, libmysql und mysqlnd (empfohlen).

Zuallererst libmysql

In der zugrunde liegenden Bibliothek von libmysql werden die Einstellungselemente MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_READ_TIMEOUT, MYSQL_OPT_WRITE_TIME sowie zugehörige APIs bereitgestellt.

Speicherort des Quellcodes

mysql-VERSION/sql-common/client.c 3020行

MYSQL_OPT_CONNECT_TIMEOUT kann direkt festgelegt werden. Aber MYSQL_OPT_READ_TIMEOUT und MYSQL_OPT_WRITE_TIME werden nicht von MySQL importiert.

Sie müssen also den Quellcode von MySQL überprüfen, die tatsächlichen Werte von MYSQL_OPT_READ_TIMEOUT und MYSQL_OPT_WRITE_TIME abrufen und dann mysql_option direkt aufrufen. Allerdings ist mysql_pdo fest codiert, sodass es keine Möglichkeit gibt, MYSQL_OPT_READ_TIMEOUT und MYSQL_OPT_WRITE_TIME festzulegen.

Quellcode-Speicherort:

mysql-VERSION/include/mysql.h 160 Zeilen

Aber MYSQL_OPT_READ_TIMEOUT ist in der MySQL5.6-Version und früher (wir verwenden 5.6 online), Für diesen Parameter gelten die folgenden drei Einschränkungen.

只能在TCP/IP协议下工作
MySQL server版本必须大于5.1.2
只能在windows下生效。

Die zweite ist mysqlnd

Für libmysql und mysqlnd sind sie die zugrunde liegenden Bibliotheken von mysql, mysqli und mysqlpdo. Daher ist ihre Unterstützung für diese drei Zeitüberschreitungen auf Codeebene gleich.

Aber für MYSQL_OPT_READ_TIMEOUT ist mysqlnd an mehreren Stellen auf der php.ini-Ebene konfiguriert

mysqlnd.net_read_timeout

Diese Konfiguration wird wirksam, wenn Langzeit-SQL ausgeführt wird, und Es wird die Fehlermeldung „2006-MySQL Server ist verschwunden“ gemeldet.

Dieser Parameter ist dem MYSQL_OPT_READ_TIMEOUT von libmysql sehr ähnlich. Allerdings gibt es für den Parameter MYSQL_OPT_READ_TIMEOUT Verwendungsszenarien, die in der vorherigen Zusammenfassung erläutert wurden.

MYSQL_OPT_CONNECT_TIMEOUT und MYSQL_OPT_WRITE_TIME sind identisch mit libmysql.

Empfohlen: "PHP-Tutorial"

Kurz gesagt

  • Verwenden Sie mysqlnd

  • Mysqlnd.net_read_time konfigurieren

Das obige ist der detaillierte Inhalt vonPHP-MySQL-Timeout-Einstellungsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn