aleks_a

Статус
  • Активный

Последние сообщения aleks_a

  • PHP для идиотовcurl и прокси • 21 июня 2012 г. 16:09

    Привет всем! Ребята, подскажите, пожалуйста: есть киношный сайтик на Укозе. Вот, пишу скрипт, который ищет "нерабочие" плеера на этом сайте(чтобы я их мог оперативно заменять). Для работы скрипта нужно использовать прокси, т.к. при частом запросе страниц IP Укозом блокируется(защита от ...
    Привет всем! Ребята, подскажите, пожалуйста: есть киношный сайтик на Укозе. Вот, пишу скрипт, который ищет "нерабочие" плеера на этом сайте(чтобы я их мог оперативно заменять). Для работы скрипта нужно использовать прокси, т.к. при частом запросе страниц IP Укозом блокируется(защита от ДДОС). Скрипт разделен на несколько кусков: функция для получения прокси, функции для проверки различных плееров(Мэйл.ру, Вконтакте, КИносток и Муви) и кусок, который через прокси берет хтмл страниц сайта. Вот код, который берет контент из страниц для последующего анализа плееров:



    static $proxy_t=0;
    for($i=0; $i<=count($buffer); $i++) /*в массиве $buffer лежат адреса страниц, на которіе скрипт должен зайти*/
    {
    $new_t=time();
    if($new_t-$time_parse>1000) //в $time_parse сохранено, когда скрипт запустился
    {
    parse(); //функция парсинга прокси
    }
    $proxy=$ip_and_port[$proxy_t]; //в $ip_and_port прокси

    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, trim($buffer[$i]));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
    $data_buffer=curl_exec($ch);
    curl_close($ch);

    if(preg_match_all('#<div\sid=\'header\'>#ims', $data_buffer, $arr)==0)
    {
    $proxy_t++;
    $proxy=$ip_and_port[$proxy_t];
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, trim($buffer[$i]));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
    $data_buffer=curl_exec($ch);
    curl_close($ch);
    }
    }
    }


    В переменной $data_buffer сам хтмл - код страниц сайта. Проблема в том, что скрипт заходит не на все страницы, т.е. если в $buffer 100 урлов, скрипт зайдет на 79. Что я сделал не правильно? Подскажите, пожалуйста.
    Спасибо
  • PHP для идиотовПроблемы с eval() • 22 мая 2012 г. 15:37

    Здравствуйте, друзья!!!Вот, встала такая проблема, не знаю, как решить ее, поэтому прошу помощи у Вас. Ситуация: нужно написать скрипт, который на вход получает числовые данные и формулы, по которым эти данные считать. Т.е., например, в отдельном файлике есть формулы для расчета, вида(например): ...
    Здравствуйте, друзья!!!

    Вот, встала такая проблема, не знаю, как решить ее, поэтому прошу помощи у Вас. Ситуация: нужно написать скрипт, который на вход получает числовые данные и формулы, по которым эти данные считать. Т.е., например, в отдельном файлике есть формулы для расчета, вида(например): $d=$a+b+c, следуюшая формула: $d=$a+b-c. Каждая формула с новой строки. Скрипт считывает данные эти. В параметры он подставляет значения массивов $a, $b, $c(как в формуле, только вместо параметров - массивы)(по индексам) . В результате заполняется другой(например, у меня $formula3) массив с матем.выражениями. Получилось такое:

    Array ( [0] => $d=(0+30751+28379)/(100*0); [1] => $d=(1+18284+7544)/(100*1); [2] => $d=(2+309+19537)/(100*2); [3] => $d=(3+22986+23734)/(100*3); [4] => $d=(4+30523+7607)/(100*4); [5] => $d=(5+28248+6436)/(100*5); [6] => $d=(6+31665+23693)/(100*6); [7] => $d=(7+18582+3650)/(100*7); [8] => $d=(8+19479+24147)/(100*8); [9] => $d=(9+6148+9104)/(100*9); [10] => $d=(10+8685+13449)/(100*10); [11] => $d=(11+22562+19598)/(100*11); [12] => $d=(12+4787+3247)/(100*12); [13] => $d=(13+12400+26812)/(100*13); [14] => $d=(14+28649+4165)/(100*14); [15] => $d=(15+21614+9114)/(100*15); [16] => $d=(16+9999+17611)/(100*16); [17] => $d=(17+25500+21672)/(100*17); [18] => $d=(18+8613+27585)/(100*18); [19] => $d=(19+18810+24422)/(100*19); [20] => $d=(20+9515+25255)/(100*20); [21] => $d=(21+7560+4948)/(100*21);

    если сделать так: echo eval($formula3[5]); то выдает такое: "Parse error: syntax error, unexpected '<' in Z:\home\formater\www\formula.php(93) : eval()'d code on line 1" . Подскажите, пожалуйста, как eval()'ом это можно посчитать.

    Вот сам скрипт:

    <?php

    /**
    * @author
    * @copyright 2012
    */

    $formuls=file_get_contents("C:/1/forms.txt");
    $sama_formula=array();
    $name=array();
    $result=array();
    $general=array();
    preg_match_all('#<formula>.*?<\/formula>#ims', $formuls, $arr);
    foreach($arr as $t=>$v)
    {
    foreach($v as $arr)
    {
    $sama_formula[]=$arr;
    }
    }
    for($i=0; $i<count($sama_formula); $i++)
    {
    preg_match_all('#<name>.*?<\/name>#ims', $sama_formula[$i], $arr);
    foreach($arr as $t=>$v)
    {
    foreach($v as $arr)
    {
    $name[]=$arr;
    }
    }
    }
    for($i=0; $i<count($sama_formula); $i++)
    {
    preg_match_all('#<general>.*?<\/general>#ims', $sama_formula[$i], $arr);
    foreach($arr as $t=>$v)
    {
    foreach($v as $arr)
    {
    $general[]=$arr;
    }
    }
    }

    $a=array();
    for($i=0; $i<100; $i++)
    {
    $a[]=$i;
    }

    for($i=0; $i<100; $i++)
    {
    $b[]=rand();
    }


    for($i=0; $i<100; $i++)
    {
    $c[]=rand();
    }
    $formula=array();
    $formula1=array();
    $formula2=array();
    $formula3=array();

    for($t=0; $t<count($general); $t++)
    {
    for($i=0; $i<count($a); $i++)
    {
    $formula[$t][$i]=$general[$t];
    }
    }



    foreach($formula as $t=>$v)
    {
    for($i=0; $i<count($v); $i++)
    {
    $formula1[]=preg_replace('#\$a#ims', $a[$i], $v[$i]);
    }

    for($i=0; $i<count($v); $i++)
    {
    $formula2[]=preg_replace('#\$b#ims', $b[$i], $formula1[$i]);
    }

    for($i=0; $i<count($v); $i++)
    {
    $formula3[]=preg_replace('#\$c#ims', $c[$i], $formula2[$i]);
    }
    }

    echo eval($formula3[5]);

    ?>


    Вот файл с формулами:


    <formula>
    <name>
    Сложение
    </name>
    <general>
    echo $d=($a+$b+$c)/(100*$a);
    </general>
    </formula>

    <formula>
    <name>
    Вычитание
    </name>
    <general>
    echo $d=($a-$b-$c)/(100*$a);
    </general>
    </formula>

    <formula>
    <name>
    умножение
    </name>
    <general>
    echo $d=($a*$b*$c)/(100*$a);
    </general>
    </formula>


    Подскажите, пожалуйста, где моя ошибка. Спасибо