скрипт php nohup mysql выдает посередине

У меня есть PHP-скрипт, который я запускаю через nohup, у которого эта проблема была в середине с MySQL. Мой скрипт проходит через пару сотен баз данных и выполняет миграцию схемы через. (все та же схема)

`system("mysql --host=$db_host --user=$db_user --password=$db_password -v -v -v $database < ../update.sql");`

В середине миграций это происходит:

--------------
ALTER TABLE `phppos_customers` ADD `current_sales_for_discount` int(10) NOT NULL DEFAULT '0' AFTER `current_spend_for_points`
--------------

Terminal close -- sending "KILL QUERY 966" to server ...
Terminal close -- query aborted
Aborted

Сценарий php продолжает работать, и другие базы данных не имеют этой проблемы. Что вызвало бы это?

PHP скрипт запускается через:

nohup php update_pos_databases.php > results.txt 2>&1 </dev/null &

Это на Mac OS X 10.11.3

Вот мои значения времени ожидания:

mysql> SHOW VARIABLES LIKE "%_timeout";
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 10       |
| delayed_insert_timeout      | 300      |
| have_statement_timeout      | YES      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50       |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout         | 28800    |
| lock_wait_timeout           | 31536000 |
| net_read_timeout            | 30       |
| net_write_timeout           | 60       |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout           | 60       |
| wait_timeout                | 28800    |
+-----------------------------+----------+
13 rows in set (0.00 sec)

Какие из них я должен изменить?

Вот больше информации о коде:

foreach($databases as $database)
{
echo "Running queries on $database\n***********************************\n";
system("mysql --host=$db_host --user=$db_user --password=$db_password -v -v -v $database < ../update.sql");
echo "\n\n";
}

2

Решение

Пара предложений (найдена в старой ветке reddit):

Используйте «disown» после запуска команды nohup. например

nohup php update_pos_databases.php > results.txt 2>&1 </dev/null &
disown %1

или же:

Используйте «экран» вместо nohup.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]