Помогите оптимизировать скрипт

Тема в разделе "PHP", создана пользователем alexz15, 2 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    Здравствуйте, вчера написал скрипт, но как мне кажется, много накосячил и он долго думает.
    Скрипт парсит объявления о работе с местного сайта. Помогите пожалуйста его оптимизировать\переделать, что бы он работал как можно быстрее.
    Заранее благодарен.

    Посмотреть вложение rabota.zip
     
  2. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    1) код вообще непонятно в каком стиле написан, отступов даже нету.
    2) тыб написал бы функции по сокетам в одном стиле а то у тебя и курл и @file_get_contents (собаку тоже поменьше юзай, замедляет)
    3)
    лучше $act = (isset($_POST['act'])) ? $_POST['act'] : '';

    4) $result = ereg_replace("http://job.privatka.info/job/", "?job=", $result); меняй на str_replace

    5)
    во-первых у echo переменные можно перечислять, а во вторых вывод лучше писать в одну переменную и ее потом выводить ,чем буфер насиловать

    ну это так, мелочи, но все равно можно поисправлять)
     
    alexz15 нравится это.
  3. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Нет обработки входящих переменных
    PHP:
    $act $_POST['act']; 
    $whatsearch $_POST['whatsearch'];
    $activity $_POST['activity'];
    $jobsurl $_GET['jobs']; 
    $joburl $_GET['job']; 
    и когда работаете curl отправляйте USERAGENT и хидеры
    PHP:
    CURLOPT_USERAGENT=> "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
    CURLOPT_HTTPHEADER=> array('Content-Type: application/x-www-form-urlencoded')
    http://ru2.php.net/manual/ru/function.curl-setopt.php
     
    alexz15 нравится это.
  4. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    переписал код, заменил файл в первом посте. теперь есть отступы, одна функция curl (с юзерагентом и хидером), ereg_replace.
    Как теперь обработать входящие данные в $_POST и $_GET?
     
  5. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    308
    Симпатии:
    38
    Это вы так пошутили?
    зачем обрабатывать запросы если она не вносится в базу и если используешь для себя...будешь себе иньекции делать=)
    Если будешь использовать регексы то обработай сперва stip_tags() и оставь те теги между которыми нужная тебе инфа...так быстрее будет работать.
     
    alexz15 нравится это.
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Отнюдь...все что приходит в скрипт извне надо проверять и фильтровать даже если это не вносится в БД то скрипт может выбросить нотайсы в браузер ..зачем кому-то знать структуру скрипта ..про собак я не обсуждаю..
    обрабатывать переменные надо в зависимость какие они ..цифровые или нет..конечно регэпсы тормозят скрипт ..но иногда это просто жизненно необходимо..вы должны при фильтрации ориентироваться на правило ..должно проходить только то что вам нужно..остальное резать...
    кстати stip_tags() далеко не идеально режет теги..и это не панацея...
     
  7. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    PHP:
    $resume preg_replace('@<script[^>]*?>.*?</script>@si'$script$resume);
    $resume preg_replace('@<noscript[^>]*?>.*?</noscript>@si'$noscript$resume);
    в одну регулярку совмести.

    PHP:
    $result str_replace("http://job.privatka.info/job/""?job="$result);
    $result str_replace("http://job.privatka.info/jobs/""?jobs="$result);
    $result str_replace("http://job.privatka.info/resume/""?resume="$result);
    $result str_replace("http://job.privatka.info/allresume/""?allresume="$result);

    имхо 1 preg_replace заменяющий эти заменялки, будет работать быстрее


    PHP:
    curl_setopt($chCURLOPT_HTTPHEADERS,array('Content-Type: application/x-www-form-urlencoded')); 
    зачем это в гетовом запросе?

    + хрень в том, что у тебя скрипт сразу же при запуске получает переменные извне..некрасиво.
     
    alexz15 нравится это.
  8. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    Спасибо всем кто помогает! ;)
    Скрипт будет стоять на одном сайте и в дальнейшем я хочу парсить почти всю приватку, включая это: http://privatnagazeta.privatka.info/
    Архив с первого поста обновил.

    Как обработать переменные?

    можно поподробнее про регексы и stip_tags плз.

    совместил
    а как лучше сделать?
     
  9. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    для начала хотяб так:

    PHP:
    $act = (isset($_POST['act'])) ? $_POST['act'] : '';
    и т.д.


    send_get совместил бы с постовой отправкой

    сделал бы так

    PHP:
    function fetch($url$post '')
    если передаешь постовый запрос, то отсылается POST иначе GET



    PHP:
    $search = array ("@<script[^>]*?>.*?</script>@si""@<noscript[^>]*?>.*?</noscript>@si");
    $replace = array ($script$noscript);
    $job preg_replace($search$replace$job);

    ты не понял, что нужно было сделать...

    какой смыл 2 раза вызывать регулярку, когда это можно сделать в одной
    (no|)script хотяб так
     
    alexz15 нравится это.
  10. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    я в php новичок.
    если я меняю, то как быть с этим:?
    PHP:
    if (isset($act)){ // отправляем данные post, получаем список вакансий или резюме
    а как вызывать эту функцию, что нужно в ней дописать?
    и тут не понял. сделать типа: ?
    PHP:
    "@<(no|)script[^>]*?>.*?</(no|)script>@si"
     
Статус темы:
Закрыта.