Загрузка файла через PHP CurlFile не удается из cron - PullRequest
0 голосов
/ 29 января 2020

У меня есть zip-файл 80M, который я загружаю в ShareFile через их REST API, используя PHP cURL. Сценарий отлично работает при запуске через браузер или на моем локальном компьютере Windows с использованием интерфейса командной строки php7. Однако, когда я пытаюсь запустить скрипт через задание cron на общедоступном хостинге нашего клиента, используя /usr/local/bin/ea-php71, , файл и скрипт внезапно перестают работать при средней загрузке .

  1. У меня есть установить мой адрес электронной почты, чтобы получать уведомления о любых и всех выводах cron.
  2. У меня есть обработчик ошибок set_error_handler, который отображает любые полученные ошибки и пытается записать их в файл (это никогда не вызывается).
  3. У меня есть register_shutdown_function, который также никогда не вызывается.
  4. Наконец, у меня есть обратный вызов curl_setopt CURLOPT_PROGRESSFUNCTION, чтобы увидеть, что происходит с загрузкой - она ​​записывает общее количество загруженных байтов $uploadTotal и текущие байты загрузки $uploadCurrent в журнал вместе с отметкой времени.
  5. (Изменить) - Забыл упомянуть, что у меня также включена подробная настройка CURLOPT_VERBOSE, и я выводю stderr в журнал файл - но ничего релевантного не отображается.

Номер 4 дал мне наибольшее понимание проблемы - когда скрипт запускается как задание cron, загрузка останавливается примерно на:

upload progress: [UploadTotal: 87455948] [UploadCurrent: 34913772]

каждый раз (ро безобразно около 67 секунд).

Некоторые окончательные сведения ...

  • При загрузке 80 МБ файла через cron - мой обработчик ошибок и функция выключения никогда не вызываются, равно как и электронная почта cron из любых отраженных данных. Сценарий просто кажется просто ПАУЗА навсегда (почти как сценарий ожидает ввода пользователя или чего-то в этом роде).

Однако:

  • Если я запускаю сценарий локально или измените файл загрузки на файл размером 5 МБ - все работает как обычно - все функции вызываются, и я получаю электронное письмо с уведомлением, что скрипт завершил работу.

Мне кажется, что я нажимаю некоторые тайм-аут через cron, который, на все, что я прочитал, не должен иметь место. Я ищу некоторые идеи о том, с чем я мог бы столкнуться или как решить эту проблему.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...