Я пишу плагин аутентификации для 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
Я уже три дня борется с этим, поэтому любая помощь будет очень признательна!
Спасибо!
избегать передачи пароля как параметра get (в url), ни в коем случае не защищенного. И я думаю, сервер требует времени ответить. сколько времени занимает браузер для загрузки сайта joomla? – Jigar
Если я отключу свой плагин, страница займет 1,16 секунды, когда я нахожу логин, и если я включу свой плагин, страница займет 1 м 4 с для загрузки. Я поставил '$ time = microtime (true);' как раз перед и после вызова fopen(), и вот как я пришел с 63 секундами. О передаче пароля в URL-адресе, я думал, что он безопасен при использовании https? – Zero
можете ли вы протестировать тест на webpagetest.org для https://xxx.xxx.xxx/api.phtml/login? Почему DNS недавно был изменен? Может быть, попробуйте закрутить вместо fopen и попробуйте другую хостинговую компанию. – jdog