мой 3-х уровневый сайт продолжает зависать с помощью cUrl - PullRequest
4 голосов
/ 23 марта 2012

Привет народов стека и переполнения,

Немного фона

Мой PHP установлен на windows 7 com с использованием IIS, и я реализую web.config и SQL Server(mssql) версия 12.0.

Сайт, который я построил, имеет теоретическую трехуровневую архитектуру. Это означает, что я протестировал использование двух комов с одним ком, содержащим mssql и веб-уровни, а другой - с приложением.tier.

, поэтому, когда пользователь подключается, он подключается следующим образом

[user's com] --request page--> [web tier] --request info--> [app tier] --get info--> [mssql tier]

im, используя PHP-функцию cUrl для отправки запросов на уровень приложения, которая выглядит примерно так:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'curl');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));
$result = trim(curl_exec($ch));

плагиат этот вопрос немного.

иногда я использую вызов $ .ajax для получения материалов с веб-уровня, таких как отзывы или сообщения.

Типичная страница содержит, возможно, 10-20 вызовов cUrl.

Проблема

Проблема в том, что сайт продолжает зависать после 3 или 4 страниц (это случайно, но обычно в этом диапазоне) или страница не загружает все (ееНасколько я понимаю, это связано с параметром curlopt_timeout (требуется пояснение), и я должен перезагрузить сервер IIS.Я определил, что это функция cUrl, которая постоянно зависает.

Я искал решение в течение нескольких месяцев, но после примерно 20 различных решений, я в своем уме.я понятия не имею, почему cUrl замораживает весь IIS (весь локальный хост зависает), и я понятия не имею, почему он продолжает возвращаться, даже когда я скопировал весь сайт на другой ком (это стало хуже).

Когда ятестировал эту штуку на 2 комах (см. выше), сайт загружался очень медленно.очевидно, из-за cUrl.

Я надеюсь, что кто-то может пролить некоторый свет на то, что происходит, и решение, если это возможно.

Спасибо сообществу stackoverflow.

Дополнительная информация

Если это помогает решить проблему, все запросы cUrl отправляются в один файл php на уровне приложения dbQuery.php, который читаетinput и загружает необходимую страницу таблицы mssql, получает или отправляет любую информацию и возвращает результат mssql в формате xml.(я думаю, это может стать узким местом, поскольку самая большая страница генерировала 37 вызовов cUrl).

Обновление

этим утром (26/3/2012) я попытался сократитьколичество вызовов cUrl и производительность сайта значительно улучшились.но замораживание все еще происходит, хотя: \

Ответы [ 2 ]

0 голосов
/ 09 апреля 2012

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

Так как это меняет вещи, я должен изменить этот вопрос на проблему localhost cUrl? Я до сих пор не знаю, почему cUrl заморозил мой локальный хост или почему он исчез, когда я поместил его в настоящую трехуровневую среду.

В любом случае, вопрос решен ... без ответа: (

0 голосов
/ 31 марта 2012

Возможно, из-за того, что URL, который вы пытаетесь прочитать с помощью curl, может занять больше времени для загрузки. Поэтому попробуйте загрузить тот же URL-адрес в браузере и проверьте, что он загружается.

...