Тайм-аут задания Cron: PHP-скрипт для загрузки длинных видеороликов

#php

#php

Вопрос:

Я вызываю скрипт mywebsite.com/download.php в crontab.

download.php

 $video_url = "www.example.com/sample.mp4";  //hour long video
$link = '/home/mywebsite.com/videos/test.mp4';

$chunkSize = 1;
$chunksize = $chunkSize*(1024*1024); // How many bytes per chunk
$data = '';
$bytesCount = 0;
$handle = fopen($video_url, 'rb');
$fp = fopen($link, 'w');
if ($handle === false) {
    return false;
}
while (!feof($handle)) {
    $data = fread($handle, $chunksize);
    fwrite($fp, $data, strlen($data));
}
$status = fclose($handle);
fclose($fp);
  

Проблема заключается в тайм-аутах скрипта для длинных видеороликов. У меня нет возможности увеличить лимиты времени ожидания сервера.

Какой альтернативный метод гарантирует загрузку полученного видео?

ignore_user_abort(); ?

set_time_limit(0); ? Будет ли это проигнорировано сервером?

У меня система очередей, поэтому одновременно загружается только 1 видео.

вызов crontab */15 * * * * /usr/bin/php /home/example.com/index.php media get_video

Комментарии:

1. Crontab — это CLI, и его тайм-аут жестко запрограммирован равным 0. Свяжитесь с администратором сервера, чтобы узнать, ограничено ли оно каким-либо образом.

2. Нет, если crontab вызывается в контексте веб-запроса, который передается от одного поставщика услуг другому.

3. Покажите нам вызов из файла crontab.

4. @paskl проверка редактирования

5. Вы уверены, что 15 минут достаточно для загрузки этого большого файла? И никакие два задания cron не записывают в один и тот же файл одинаковое содержимое одновременно?