2014-11-29 3 views
0

Я пишу плагин аутентификации для Joomla. Плагин вызывает внешний сайт для проверки имени пользователя и пароля.fopen() очень медленно при использовании в Joomla

Код работает, но моя проблема в том, что когда я вызываю fopen() из плагина Joomla, для его ответа требуется очень долгое время (63 секунды).

При выполнении того же кода на сервере (но не через Joomla) вызов fopen() занимает всего 0,1 секунду.

Есть ли какие-либо настройки, которые могли бы изменить Joomla, что делает вызов fopen() длительным? Или есть ли какая-либо другая функция, которую я должен использовать вместо fopen()? (Я пробовал file_get_contents(), но с тем же результатом)

Ниже приведен код, я использую (на основе этой статьи: http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl/) (. Я не установлен Curl, так что это не вариант)

$username = "admin"; 
$password = "1234" ; 
$verb = 'GET' 
$url = "https://xxx.xxx.xxx/api.phtml/login" ; 

$params = array("username"=>$username, "password"=>$password);  
$params = http_build_query($params); 
$url .= '?' . $params; 

$cparams = array('http' => array( 'method' => $verb, 
            'ignore_errors' => true)); 

$context = stream_context_create($cparams); 
$fp = fopen($url, 'rb', false, $context); 

Разрешен разрешающий_путь_fopen.

Joomla! Версия: Joomla! 2.5.27 Стабильный
PHP Версия: 5.2.6-1 + lenny10

Я уже три дня борется с этим, поэтому любая помощь будет очень признательна!

Спасибо!

+0

избегать передачи пароля как параметра get (в url), ни в коем случае не защищенного. И я думаю, сервер требует времени ответить. сколько времени занимает браузер для загрузки сайта joomla? – Jigar

+0

Если я отключу свой плагин, страница займет 1,16 секунды, когда я нахожу логин, и если я включу свой плагин, страница займет 1 м 4 с для загрузки. Я поставил '$ time = microtime (true);' как раз перед и после вызова fopen(), и вот как я пришел с 63 секундами. О передаче пароля в URL-адресе, я думал, что он безопасен при использовании https? – Zero

+0

можете ли вы протестировать тест на webpagetest.org для https://xxx.xxx.xxx/api.phtml/login? Почему DNS недавно был изменен? Может быть, попробуйте закрутить вместо fopen и попробуйте другую хостинговую компанию. – jdog

ответ

0

Обычно, когда у нас есть проблема с fopen, мы переключаемся на завиток и это решает проблему. В любом случае, проверьте свои .htaccess и ваши локальные файлы php.ini (или .user.ini) на сайте Joomla для каких-либо ограничений на fopen.