Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2012, 12:38
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

sitemap на php - скорость
Накидал за 10 минут скрипт генерации карты на пхп и был удивлен мега медленной скорости - в секунду примерно одна страница обрабатывается. Делаю через file_get_content далее explode.Кто нить делал подобное на пхп?
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2012, 13:07
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Так нарочно нужно скорость чуть уменьшить, что бы не положить донора.
По теме: читаю курлами, обрабатываю регулярками.
PS: explode для поиска ссылок? О_о
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2012, 17:28
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

1 ссылка в секунду слишком долго, тем более локально на денвере тестирую , ладно бы там 10 ссылок ...

я же говорю накидал за 10 минут explode ("href=",текст) далее нашел кавычку и дальше. Причем делал пробывал два метода - рекурсией и циклом по стеку необработанных ссылок - скорость одна и та же .

не думаю что от регулярных скорость повысится.
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2012, 17:34
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

так вы локалхост мучаете, и он отдает со скоростью 1 страница в секунду?
Ответить с цитированием
  #5 (permalink)  
Старый 26.02.2012, 19:31
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

да , мучаю локалхост в инете тоже пробывал - работает не намного быстрее .... просто думаю на механизм, пробывал через сокеты та же скорость. Через аякс конечно будет быстрее, только вот в крон его не запихаешь ...
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2012, 19:43
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

cuberboy,
не страдайте ерундой - preg_replace надо юзать, то ли я не писал парсеров...

А вопрос всё же надо уточнить: вы работаете по cron и хотите скорость быстрее, чем 1 запрос в сек?
Это я к чему спрашиваю. что может дело не в скрипте и методе подхода, а в том что крон чаще не может срабатывать?
Ответить с цитированием
  #7 (permalink)  
Старый 26.02.2012, 19:56
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

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

Обратил больше внимания задержке "чтоб не положить донора" как итог - при секундной задержке(не задержка а скорость по факту такая) висит что локалхост что сайт в инете, прихожу к неутешительным выводам что на чистом пхп без того чтоб не повесить сервер карту не сделать?

крон будет пускать там раз в сутки.. да и вообще можно без крон ..

просто есть скрипт php, пускаем его он делает карту ....
Ответить с цитированием
  #8 (permalink)  
Старый 26.02.2012, 20:05
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

кронтаб в приниципе, чаще чем раз в минуту не запускается-там первый параметр-как раз минуты, а не секунды, т.е.
* * * * * php cron.php
это раз в минуту, но это к делу опосредованно-я так понял, скрипт получил задачу и фоном себе отрабатывает.
А посмотреть время выполнения участков - пробовали сделать? У курла есть детальный отчет внутри, на что ушло время-начиная с резолвинга ДНС итд, и потом-сколько ушло там на strpos и прочее ручками в лог пометить. потому что это ОЧЕНЬ надо постараться, что бы код выполнял такие простейшие операции как strpos порядка секунды, это сколько итераций он должен сделать.
Ответить с цитированием
  #9 (permalink)  
Старый 26.02.2012, 21:57
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

крон тут не причем - зачем делать карту чаще чем раз в секунду?

или имеет в виду скрипт отрабатывает 30 секунд( в случае ограничения времени ан сервере и не возможности его снять) далее скажем каждые 5 сек сохраняем результат куданить (ну тут опять операции ввода вывода ёмкие ...) ,дебри, задача была в том чтоб раз или два в сутки запускался крон и отрабатывал пхп в фоне, пусть ограничения по времени нету.

делал через file_get_content() , не через курл - думал отработает быстрее.

вставил в кусок разбора страницы регулярное не помогло ... напсиал всё с нуля заработало быстрее !!!! но через минуту опять "тупит", но всё же ))))

вот код
<? set_time_limit(600); $server=$_GET[server]; if(!$server) {echo "<form ><input name=server><input type=submit></form>";exit;}

function parse($index,$s){global $server;global $link;  global $file; global $url2;
if($index=="/") {$index="";}
$link["$index"]=1;  $adr="http://$server/$index";  echo " [".count($url2)."] ".microtime(true)." ".$adr."<br/>";   flush();

$str=@file_get_contents($adr);/*$str=iconv("utf-8","windows-1251",$str);//опционально*/if(!$str) { echo "<b>"."http://$server/$index"."</b>";return 0; }

//@preg_match_all('/<a\s([^<]*?)href=[\'\"]?(?!https?:|mailto:|ftps?:)(\.{0,2}\/)?([^<>\'\"]+)[\'\"]?/im',$str,$rez);
  @preg_match_all('/<a\s([^<]*?)href=[\'\"]?(\.{0,2}\/)?([^<>\'\"]+)[\'\"]?/im',$str,$rez);
foreach($rez[3] as $nom=>$newurl){
if($link[$newurl]!=1){$url2[]=$newurl;  $link[$newurl]=1;}
}
}

$url2[]="/";
while(count($url2)){
$url3=array_pop($url2);
parse($url3,"");
}
?>


идея проста - два массив в одном проверенные ссылки в другом новые.
Ответить с цитированием
  #10 (permalink)  
Старый 26.02.2012, 22:12
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Ну так где лог? "Тупит через минуту" на каких операциях? На каких данных?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Связь между страницами с javascript и php ... и обратно okrip25 AJAX и COMET 7 09.01.2012 14:43
Запуск выполнения PHP при нажатие на кнопку??? Abibas220 Общие вопросы Javascript 1 05.01.2011 12:05
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23