alibek_kz » 2013.07.10 07:24

как?можно ли реализовать?

Gemorroj » 2013.07.10 10:14

ложить задания в бд. и отдельным скриптом по крону выкачивать.

alibek_kz » 2013.07.10 10:21

вообщем эти файлы через сокеты и функции copy не закачиваеться.только через curl.закачка видео в формате 3gp из ютуба

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$url 'domain.com/file.3gp';
$targetFile fopen('m.3gp''w');
$ch curl_init($url);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_NOPROGRESSfalse);
curl_setopt($chCURLOPT_PROGRESSFUNCTION'progressCallback');
curl_setopt($chCURLOPT_FILE$targetFile);
curl_exec($ch);
fclose($ch);
function progressCallback($download_size$downloaded_size$upload_size$uploaded_size)
{
    static $previousProgress 0;
 
    if ( $download_size == )
        $progress 0;
    else
        $progress round($downloaded_size 100/$download_size);
}
?>

этим способом некачает в фоновом режиме

Gemorroj » 2013.07.10 11:46

вот только при чем тут фоновая загрузка..)

alibek_kz » 2013.07.10 11:54

не понял?

alibek_kz » 2013.07.10 12:21

например пользаватель найдет себе видео и нажмет на кнопку создать 3gp и должен файл 3gp скачаться на сервер в фоновом режиме.и пользаватель когда обновляет страницы ему скрипт должна выводить процент загрузки файла на сервер.ну понял?

Gemorroj » 2013.07.10 13:00

alibek_kz, это не фоновая загрузка. Ты скачиваешь файл в 1 потоке. Если пользователь перезагрузит страницу, то закачка оборвется (если не стоит ignore_user_abort). Это просто прогресс загрузки файла. Никакого отношения к "фоновости" это не имеет.

alibek_kz » 2013.07.10 13:28

ну тогда как сделать так как в 6 посте?

Gemorroj » 2013.07.10 13:57

как во 2 посте.

alibek_kz » 2013.07.10 19:23

ну тогда через вед не работает.что будет ли работат если я напишу ignore_user_abort

Gemorroj » 2013.07.10 20:02

какой еще "вед"?

alibek_kz » 2013.07.10 21:06

вед крон незнает когда пользаватель заходить

Gemorroj » 2013.07.11 00:42

крон запускай каждую минуту, например.
сгребай в массив ссылки из базы. ставь в бд отметку что файлы в процессе скачивания (чтобы новый крон процесс не взял эти ссылки).
скачивай.
а пользователю выдаешь инфу из бд о состоянии его ссылки.

POFIGISST » 2013.07.11 10:25

а нагрузки не будет если каждую минуту запускать?

Gemorroj » 2013.07.11 10:57

POFIGISST, ну можешь не запускать.

alibek_kz » 2013.07.11 15:17

а как на javascript e реализовать?

Gemorroj » 2013.07.11 15:29

http://blueimp.github.io/jQuery-File-Upload/

Akdmeh » 2013.07.17 11:39

Я еще делал так:
запускал файл через system(), и запускал wget в фоновом процессе (команда типа wget http://example.com/test.jpg &). Решение хорошее тем, что мы делаем задачу загрузки на плечи более предназначенной для этого программе, а не средствами php.
Правда, я не нашел лучшего решения узнать, загружен ли файл, чем средством файла-флага, то есть, я создаю файл с тем же именем и окончанием .finished, и затем проверяю с помощью php - если файл с данным окончанием существует, значит файл закачан.

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

TLENS » 2013.07.22 22:03

Можно как вариант создать script_loader.php?url=url&path=Куда качать
и с другого script_process.php делать команду например через курл с минимальным таймаутом ожидания ответа. Скрипт послал http запрос на script_loader.php и при получении ошибки об таймауте продолжает выполнение генерации страницы. А вот процент можно определить filesize($path) * 100 / данные полученые из заголовков get_headers($url, true);

alibek_kz » 2013.08.02 17:33

Akdmeh написал:

Я еще делал так:
запускал файл через system(), и запускал wget в фоновом процессе (команда типа wget http://example.com/test.jpg &). Решение хорошее тем, что мы делаем задачу загрузки на плечи более предназначенной для этого программе, а не средствами php.
Правда, я не нашел лучшего решения узнать, загружен ли файл, чем средством файла-флага, то есть, я создаю файл с тем же именем и окончанием .finished, и затем проверяю с помощью php - если файл с данным окончанием существует, значит файл закачан.

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

я знаю этот вариант и этот доступен только в вдс или дедике.а я на шаред хостинге

TLENS » 2014.05.06 20:41

Как вариант выполнить системную команду wget http://... &
Правда сам не пробовал из php но думаю норм вариант

alibek_kz » 2014.05.06 20:56

TLENS написал:

Как вариант выполнить системную команду wget http://... &
Правда сам не пробовал из php но думаю норм вариант

Да на этом и остался.
Но оно в шаред хостах не будет работать.