Привет народов стека и переполнения,
Немного фона
Мой 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 и производительность сайта значительно улучшились.но замораживание все еще происходит, хотя: \