2012-03-23 1 views
4

Привет StackOverflow народы,мой 3 ярусы сайт держит замораживания с помощью Curl

немного фона устанавливается

Мой PHP на под управлением Windows 7 ком с помощью IIS и я реализовать web.config и SQL Server (mssql) - 12,0.

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

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

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

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

$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)); 

плагиате this question в немного.

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

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

Проблема

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

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

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

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

Благодарим сообщество stackoverflow.

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

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

Update

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

+0

Есть ли какие-либо сообщения в Windows Зарегистрируйтесь? – Stony

+0

если и означает Httperr.log, нет, просто куча Timer_ConnectionIdle –

+0

Нет, я имел в виду system log unter «Мой компьютер» -> щелкните правой кнопкой мыши -> Управление и там syslogs. Если сервер зависает, то в httperr.log нет сообщений – Stony

ответ

0

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

+0

Я ранее размещал CURLOPT_CONNECTTIMEOUT и CURLOPT_TIMEOUT до 10 каждый, и это все еще происходит –

0

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

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

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

Смежные вопросы