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

Статус
В этой теме нельзя размещать новые ответы.

alexz15

Постоялец
Регистрация
3 Окт 2008
Сообщения
394
Реакции
194
Здравствуйте, вчера написал скрипт, но как мне кажется, много накосячил и он долго думает.
Скрипт парсит объявления о работе с местного сайта. Помогите пожалуйста его оптимизировать\переделать, что бы он работал как можно быстрее.
Заранее благодарен.
 
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 form1($url);
echo $gorvak;
echo $actvak;
echo $jobs;
echo $job;

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

ну это так, мелочи, но все равно можно поисправлять)
 
Нет обработки входящих переменных
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')
Для просмотра ссылки Войди или Зарегистрируйся
 
переписал код, заменил файл в первом посте. теперь есть отступы, одна функция curl (с юзерагентом и хидером), ereg_replace.
Как теперь обработать входящие данные в $_POST и $_GET?
 
Нет обработки входящих переменных
PHP код:
$act = $_POST['act'];
$whatsearch = $_POST['whatsearch'];
$activity = $_POST['activity'];
$jobsurl = $_GET['jobs'];
$joburl = $_GET['job'];
Это вы так пошутили?
зачем обрабатывать запросы если она не вносится в базу и если используешь для себя...будешь себе иньекции делать=)
Если будешь использовать регексы то обработай сперва stip_tags() и оставь те теги между которыми нужная тебе инфа...так быстрее будет работать.
 
Это вы так пошутили?
зачем обрабатывать запросы если она не вносится в базу и если используешь для себя...будешь себе иньекции делать=)
Если будешь использовать регексы то обработай сперва stip_tags() и оставь те теги между которыми нужная тебе инфа...так быстрее будет работать.
Отнюдь...все что приходит в скрипт извне надо проверять и фильтровать даже если это не вносится в БД то скрипт может выбросить нотайсы в браузер ..зачем кому-то знать структуру скрипта ..про собак я не обсуждаю..
обрабатывать переменные надо в зависимость какие они ..цифровые или нет..конечно регэпсы тормозят скрипт ..но иногда это просто жизненно необходимо..вы должны при фильтрации ориентироваться на правило ..должно проходить только то что вам нужно..остальное резать...
кстати stip_tags() далеко не идеально режет теги..и это не панацея...
 
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($ch, CURLOPT_HTTPHEADERS,array('Content-Type: application/x-www-form-urlencoded'));

зачем это в гетовом запросе?

+ хрень в том, что у тебя скрипт сразу же при запуске получает переменные извне..некрасиво.
 
Спасибо всем кто помогает! ;)
Скрипт будет стоять на одном сайте и в дальнейшем я хочу парсить почти всю приватку, включая это:
Архив с первого поста обновил.

Нет обработки входящих переменных
PHP:
$act = $_POST['act']; 
$whatsearch = $_POST['whatsearch'];
$activity = $_POST['activity'];
$jobsurl = $_GET['jobs']; 
$joburl = $_GET['job'];
Как обработать переменные?

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

в одну регулярку совмести.
совместил
+ хрень в том, что у тебя скрипт сразу же при запуске получает переменные извне..некрасиво.
а как лучше сделать?
 
а как лучше сделать?
для начала хотяб так:

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 хотяб так
 
я в php новичок.
для начала хотяб так:
PHP:
$act = (isset($_POST['act'])) ? $_POST['act'] : '';
и т.д.
если я меняю, то как быть с этим:?
PHP:
if (isset($act)){ // отправляем данные post, получаем список вакансий или резюме
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 хотяб так
и тут не понял. сделать типа: ?
PHP:
"@<(no|)script[^>]*?>.*?</(no|)script>@si"
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху