Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оптимизация работы с веб-сервисами 
:(
    Опции темы
derek
Дата 21.7.2009, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



допустим нам надо много (50 раз подряд) просклонять что-нибудь при помощи яндекс-склонятора.

воспользуемся таким кодом
Код

<?
function rodpadeg($namein)
{
$xml = new SimpleXMLElement('http://export.yandex.ru/inflect.xml?name='.rawurlencode($namein), NULL, TRUE);
$rodpad = $xml->inflection[1];
return $rodpad;
}


for ($i=0;$i<50;$i++){
echo rodpadeg('тест')."<br>";
}
?>    


работает медленно. как должен выглядть код, оптимизированный под вот такие многократные запросы?

зы. я надеюсь понятно что задача задана абстрактно, в реале одно и то же слово 50 раз склонять не надо
PM MAIL   Вверх
skyboy
Дата 21.7.2009, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



опыта разработки высоконагруженных систем не имею, к соображению прошу относиться со здоровым скептицизмом.
итак, идея.
проблема в том, что работа с сетью в PHP в данном случае синхронна - пока не придет ответ на первый запрос, второй запрос отправлен не будет. потому необходимо добиться ассинхронности.
вариант 0. делаем отдельный сервис, умеющий работать ассинхронно. им передаем пачку запросов, сервис формирует передачу запроса/получение ответа и возвращает ответ тоже кучно. 
достоинство: время реакции измеряется длиной максималього по продолжительности запроса, потому как запросы идут в несколько потоков.
недостаток: PHP скрипт должен дождаться обработки всего пакета. даже если вместо 50*1=50 секунд надо ждать 2 секунды, то все равно - скрипт висит, занимает ресурсы.
вариант 1. отделяем формирование запроса(к сайту или сервису-посреднику) от обработки ответа: один скрипт формирует пакетный запрос из 50 запросов и завершает свою работу, сервис отправляет пакет, получает ответ и запускает 50 экемпляров скрпта-обработчика, передавая каждому скрипту "свой" результат запроса.
вот такие идеи.
PM MAIL   Вверх
icewind
Дата 21.7.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Оптимизировать можно только используя многопоточность. Средствами php это реализовать не возможно. Есть вариант используя curl_multi (и не только) ускорить скачивание, но обработка все равно будет идти одним потоком.


--------------------
user posted image
PM MAIL Skype   Вверх
lukas
Дата 22.7.2009, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Для ускорения в некоторых случаях можно еще использовать какую нибудь систему кеширования ваших запросов.


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0695 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.