Таким образом, у меня есть инвентарь на веб-сайте. Я ежедневно перевожу инвентарь со своего локального компьютера на мой размещенный веб-сайт, чтобы поддерживать его в актуальном состоянии. Таким образом, я в основном делаю изменения на своем локальном компьютере, а затем позволяю всем обновлениям запускаться каждую ночь, используя mysqldump для сбора ресурсов. У меня был свой веб-сайт на виртуальном хостинге, и он работал отлично. На сайте продолжалось простоя, поэтому я попытался перейти на VPS-сервер Bluehost. Теперь сервер, на котором я работаю, настроен по-другому, и дамп больше не работает.
Вот что происходит:
Дамп проходит около 25% пути, а затем выходит. Из 40 тыс. Предметов инвентаря он загружает только 9-11 тыс. Каждый раз, когда я пытаюсь. Приводит меня к мысли, что есть или проблема тайм-аута, или проблема размера данных. Весь процесс загружался за 1 минуту, а теперь завершается примерно через 20 секунд.
То, что я уже пробовал, — это изменение файла конфигурации myql my.cnf путем добавления этих строк:
net_read_timeout = 7200
net_write_timeout = 7200
А вот мой код:
<?php
ini_set('max_execution_time', 0);
set_time_limit(0);
ini_set('set_memory_limit', -1);
ini_set('display_errors', 1);
error_reporting(E_ALL);
include "globe/globalvariables.php";
$output = exec(
"mysqldump -h ".$local_business_ip.
" -u".$local_business_db_admin_login.
" -p".$local_business_db_admin_password.
" ".$local_business_inventory_db_name.
" ".$local_business_inventory_table_name." | mysql -h ".$web_db_host.
" -u".$web_db_admin_login.
" -p".$web_db_admin_password.
" ".$web_db_name);
echo "done";
?>
Я также попытался изменить первую строку exec на:
mysqldump nohup -h ".$local_business_ip.
Но nohup просто пропускает всю операцию, как будто это плохая команда или что-то в этом роде.
Я также пробовал shell_exec, system и pass_thru или passthru.
Я также обновил MYSQL до 5.6 на сервере.
Я искал ответы в течение двух дней. У любого тела есть подсказка, что я могу сделать? Я считаю, что это какая-то проблема с настройкой Apache. Кстати, я на сервере Bluehost VPS с WHM. И никакой Bluehost не помогает вообще! Они также не сказали мне, что конфиг будет сброшен или что-то еще.
Я нашел это в руководстве по PHP:
_ «Функция set_time_limit () и директива конфигурации max_execution_time_
влияет только на время выполнения самого скрипта. Любое время, потраченное на деятельность, которая происходит вне выполнения скрипта, таких как системные вызовы с использованием system (), stream операции, запросы к базе данных и т. д. не учитываются при определении максимального времени сценарий был запущен. Это не так в Windows, где измеренное время реально ».
Не уверены, КАК сделать ограничение по времени для exec и системных функций выше?
Так что я новичок, но я нашел, где был журнал ошибок apache, и увидел эту ошибку:
mod_fcgid: чтение тайм-аута данных за 40 секунд, …
после поиска ошибки на гугле этот сайт помог!
http://blog.secaserver.com/2011/07/cpanel-apache-php-fastcgi-data-timeout-error
Это с этого сайта:
* Если вы работаете на сервере cPanel и в Apache включен FastCGI, вы можете столкнуться со следующей ошибкой, которая вызвала зависание вашего сайта, или с появлением сообщения «500 Internal Server Error». При входе в / etc / httpd / log / error_log вы увидите нечто похожее на приведенное ниже:
Это связано с тем, что mod_fcgid достиг тайм-аута при обработке данных разбора. Поэтому нам нужно увеличить некоторые соответствующие значения:
Войдите в WHM> Конфигурация Apache> Редактор включения> Включить включение VirtualHost> Все
Скопируйте и вставьте следующий код:
FcgidProcessLifeTime 8200
FcgidIOTimeout 8200
FcgidConnectTimeout 400
FcgidMaxRequestLen 1000000000
перезапустите apache *
Других решений пока нет …