#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 не записывают в один и тот же файл одинаковое содержимое одновременно?