Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
13 / 13 / 3
Регистрация: 31.03.2013
Сообщений: 287

Curl execution time

22.04.2015, 20:47. Показов 1002. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Здравствуйте. Я расскажу что я делаю и что у меня не выходит:
0)
PHP
1
$uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14"; //типа я не скрипт :D
1) Беру страницу сайта с помощью curl:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function firstcurl($url)
{
    global $uagent;
    $ch = curl_init( $url );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($ch, CURLOPT_HEADER, 0);           
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_ENCODING, "");      
    curl_setopt($ch, CURLOPT_USERAGENT, $uagent); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'coc.txt'); //куки
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'coc.txt');  //куки
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);      
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);   
    $content = curl_exec( $ch );
    curl_close( $ch );
    return $content;
}
2) Беру с этой страницы с помощью simple php dom ссылку на скачивание:
PHP
1
$zip = $html->find('.zip a', 0)->href; //в переменной теперь хранися ссылка на страницу, на которой можно скачать файл
3) открываю страницу скачивания файла с помощью curl. Жду 35 секунд ( т.к. там таймер 30 сек перед тем как появится ссылка на скачивание):

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function twocurl($url)
{
    global $uagent;
    $ch = curl_init( $url );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($ch, CURLOPT_HEADER, 0);          
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_ENCODING, "");      
    curl_setopt($ch, CURLOPT_USERAGENT, $uagent); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'coc.txt');
    //curl_setopt($ch, CURLOPT_COOKIEJAR, 'coc.txt');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);   
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
 
 
    $content = curl_exec( $ch );
    if ($content == FALSE) {
 
        $content = "error";
 
    }
    else
    {
            sleep(35);
            $content = curl_exec( $ch );            
    }
    curl_close( $ch );
    return $content;
}
4. Из получившегося получаю ссылку на скачивание:
PHP
1
$ssilka = $html->find('.btn-success', 0)->href;
5. С помощью курла сохраняю файл:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ch = curl_init($ssilka);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'coc.txt');
        //curl_setopt($ch, CURLOPT_COOKIEJAR, 'coc.txt');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
        curl_setopt($ch, CURLOPT_TIMEOUT, 120);   
        curl_setopt($ch, CURLOPT_MAXREDIRS, 120); 
        $output = curl_exec($ch);
            if (!mkdir($modName, 0777, true))
            {
                echo 'Папка уже есть';
            }
            else
            {
                $fh = fopen($modName . "/" .$modName.".rar", 'w');
                fwrite($fh, $output);
                fclose($fh);                
            }
        curl_close( $ch );

Все - он работает, но...
Если я возьму и сделаю цикл для 2-3 таких страничек ( для каждой скрипт должен проделать все эти действия), то у меня получается ошибка Maximum execution time of 60 sec.
Если я в php.ini прописываю execution time например = 400, то мой скрипт выдаст ошибку не на 2-3 ссылке, а скажем на 5.


Скажите пожалуйста, что я делаю не правильно и как мне это исправить. Спасибо за вашу помощь!

P.S. Тут приходится использовать куки, т.к. ссылка на страницу скачивания, и ссылка на файл генерируются в зависимости от времени и может быть еще каких то параметров, и доступна не долгое время только в этом же браузере ( ну это я проверил в хроме и опере )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2015, 20:47
Ответы с готовыми решениями:

PHP execution time
Всем привет. Проблема вот в чем, я с сайта отправляю письмо используя mail(). Но сервер очень часто не хочет его даже ставить в очередь,...

Авторизация curl (различие между curl и ajax запросами)
Есть ли различие в передаче данных в json формате через curl и ajax? Я хочу написать запрос, который будет авторизировать пользователя на...

Curl команду превратить в php curl
команда: curl -s -F widget=$WIDGET -F secret=$SECRET -F amouser=$AMOUSER -F amohash=$AMOHASH -F domain=amocrm.ru -F widget=@$file...

3
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.04.2015, 22:36
Цитата Сообщение от ychelovek Посмотреть сообщение
скрипт выдаст ошибку не на 2-3 ссылке, а скажем на 5.
Ту же самую?
З.Ы. Попробуйте добавить
PHP
1
2
ini_set('max_execution_time', 400);
set_time_limit(0);
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
22.04.2015, 23:11
запускайте такие скрипты через cli. если нужно именно на сервере -- создавайте отдельную задачу. можно запускать по крону, если вам постоянно нужно что-то скачивать.
если вы выложите ваш такой скрипт на сайте, то вас будет очень легко задосить, даже без
PHP
1
set_time_limit(0);
0
13 / 13 / 3
Регистрация: 31.03.2013
Сообщений: 287
23.04.2015, 14:26  [ТС]
max_executive_time поменял на 0. Все заработало.
Спасибо за ответы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2015, 14:26
Помогаю со студенческими работами здесь

Execution Time и clock()
Добрый день, пишу на codeblocks, ubuntu. Хочу узнать, в чем различие между execution time и clock() ? Оба как бы показывают время...

Maximum execution time
Существует некий цикл операций который при выполнении выводит ошибку Fatal error: Maximum execution time of 60 seconds exceeded in...

Maximum execution time of 300
Пытаюсь загрузить в Денвер БД ip стран *.csv около 11мб. В php.ini увеличил размер файла с 2 до 15мб но время не позволяет загрузить. ...

Аgent Execution Time Limit
Есть ли возможность на сервере Domino установить максимальное время работы Sheduled агентов? По умолчанию 15 минут стоит, агент не...

Внезапное Maximum execution time
Потихоньку разбираюсь с php, реализую загрузку файлов на сервак, но внезапно возникла проблема, большие файлы прерывают выполнение скрипта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru