У меня есть zip-файл 80M, который я загружаю в ShareFile через их REST API, используя PHP cURL. Сценарий отлично работает при запуске через браузер или на моем локальном компьютере Windows с использованием интерфейса командной строки php7. Однако, когда я пытаюсь запустить скрипт через задание cron на общедоступном хостинге нашего клиента, используя /usr/local/bin/ea-php71
, , файл и скрипт внезапно перестают работать при средней загрузке .
- У меня есть установить мой адрес электронной почты, чтобы получать уведомления о любых и всех выводах cron.
- У меня есть обработчик ошибок
set_error_handler
, который отображает любые полученные ошибки и пытается записать их в файл (это никогда не вызывается). - У меня есть
register_shutdown_function
, который также никогда не вызывается. - Наконец, у меня есть обратный вызов
curl_setopt
CURLOPT_PROGRESSFUNCTION
, чтобы увидеть, что происходит с загрузкой - она записывает общее количество загруженных байтов $uploadTotal
и текущие байты загрузки $uploadCurrent
в журнал вместе с отметкой времени. - (Изменить) - Забыл упомянуть, что у меня также включена подробная настройка
CURLOPT_VERBOSE
, и я выводю stderr в журнал файл - но ничего релевантного не отображается.
Номер 4 дал мне наибольшее понимание проблемы - когда скрипт запускается как задание cron, загрузка останавливается примерно на:
upload progress: [UploadTotal: 87455948] [UploadCurrent: 34913772]
каждый раз (ро безобразно около 67 секунд).
Некоторые окончательные сведения ...
- При загрузке 80 МБ файла через cron - мой обработчик ошибок и функция выключения никогда не вызываются, равно как и электронная почта cron из любых отраженных данных. Сценарий просто кажется просто ПАУЗА навсегда (почти как сценарий ожидает ввода пользователя или чего-то в этом роде).
Однако:
- Если я запускаю сценарий локально или измените файл загрузки на файл размером 5 МБ - все работает как обычно - все функции вызываются, и я получаю электронное письмо с уведомлением, что скрипт завершил работу.
Мне кажется, что я нажимаю некоторые тайм-аут через cron, который, на все, что я прочитал, не должен иметь место. Я ищу некоторые идеи о том, с чем я мог бы столкнуться или как решить эту проблему.
Спасибо!