PHP スクリプトの 1 つで似たようなものを見つけたので、スロー クエリを実行する直前にインラインで追加しました。
$timeout_seconds = 3153600; // 1 year...
// Make sure the PHP script doesn't time out
set_time_limit(0);
ignore_user_abort(1);
// Make sure the PHP socket doesn't time out
ini_set('default_socket_timeout', $timeout_seconds);
ini_set('mysqlnd.net_read_timeout', $timeout_seconds);
// Make sure the MySQL server doesn't time out
// Assuming your $link is a MySQLi object:
$link->query("SET SESSION connect_timeout=" . $timeout_seconds);
$link->query("SET SESSION delayed_insert_timeout=" . $timeout_seconds);
$link->query("SET SESSION have_statement_timeout='NO'");
$link->query("SET SESSION net_read_timeout=" . $timeout_seconds);
$link->query("SET SESSION net_write_timeout=" . $timeout_seconds);
秒数を適切に設定する必要があることは明らかですが、スクリプトがタイムアウトになることはまったく望んでいませんでした。
PHP 初期化ディレクティブ: https://www.php.net/manual/en/ini.list.php
MySQL サーバー変数: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
注: 詳細についてはドキュメントを確認し、使用している PHP および MySQL のバージョンと変数が一致していることも確認してください。PHP 7.3 と MySQL 5.7 を使用しています。
** 編集: 私のスクリプトでは PHP のタイムアウトを設定するだけでは十分ではありませんでした。MySQL SESSION 変数も追加する必要がありました。