Dram

Рейтинг
1115
Регистрация
28.06.2008
Это разовый скрипт, сделал и забыл, незачем было упарываться с оптимизациями, но вы правы, спасибо.

Я так делаю

function get_Yandex_disk($url)
{
    //Инициализируем сеанс
    $curl = curl_init();
    //Указываем адрес страницы
    curl_setopt($curl, CURLOPT_URL, $url);
    //Ответ сервера сохранять в переменную, а не на экран
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //Переходить по редиректам
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    $agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36';
    curl_setopt($curl, CURLOPT_USERAGENT, $agent);
    //$getUserAgent = getUserAgent();
    //curl_setopt($curl, CURLOPT_USERAGENT, $getUserAgent);
    curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
    curl_setopt($curl, CURLOPT_TIMEOUT, 20); //timeout in seconds
    //cookie
    curl_setopt($curl, CURLOPT_COOKIEJAR, __DIR__. '/cookie.txt');
    curl_setopt($curl, CURLOPT_COOKIEFILE, __DIR__. '/cookie.txt');
    //если сайт https
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    //http2 если нужно
    curl_setopt($curl, CURLOPT_HTTP_VERSION, 3);
    //Выполняем запрос:
    $result = curl_exec($curl);

    $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    return array( "code" => $httpcode, "response" => $result );
}

Где урл публичная ссылка на Яндекс диск

$result = get_Yandex_disk( "https://cloud-api.yandex.net:443/v1/disk/public/resources/download?public_key=" . urlencode( $url ));
        if( $result["code"] == 200 )
        {
            $result["response"] = json_decode( $result["response"], true );
            $urlDownload =  $result["response"]["href"];
          
        }else
        {
            echo "error";
        }

По ссылке, что советует  totamon у меня довольно часто ловит капчу от Яндекса. 

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

Странно, впервые такое приходится делать



livetv #:

Сколько времени работает скрипт?

Если долго, то да, нужно закрывать соединение и открывать заново.

Это для долгого консольного выполнения скрипта в основном.

до ошибки минуты 2-3

Dram #:
У меня одна догадка - может первый же селект в цикле вызывает открытие соединения с базой, но я его не закрываю и затем оно и закрывается по таймауту? Нужно ли закрывать соединение в PDO ?

вроде нет, сделал 

$chek2 = null;
$result2 = null;

не помогло

webinfo #:

У тебя ошибка выдаётся не на select, а на insert.

Нет - именно на селект, я уже проверил это, был второй try-catch, я его просто убрал.

У меня одна догадка - может первый же селект в цикле вызывает открытие соединения с базой, но я его не закрываю и затем оно и закрывается по таймауту? Нужно ли закрывать соединение в PDO ?
БОЧ рВФ 260602 :

Может заблочить доступ к сайту с IP v6?

Естественно заблочить, нафиг вы вообще открыли? Я когда паршу сайты (которые с защитой), первым делом проверяю - а не отрыт ли  IP6 ибо прокси под него оч. дешевые.

Может в одном из файлов буква - е или х русская?

Смысла в антивире ноль.

Лично я себе сделал  некий аналог - раз в 30 минут все файлы сервера (за исключением папок кеша) анализируются на время создания, если есть изменения, мне приходит уведомление. За последние 10 лет такой простой скрипт помог мне дважды очень быстро увидеть что меня взломали (через кривые расширения CMS) и быстро все устранить.

Всего: 6928