Я пишу плагин аутентификации для 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);
Allow_url_fopen включен.
Joomla! Версия: Joomla! 2.5.27 Стабильный
Версия PHP: 5.2.6-1 + lenny10
Я боролся с этим уже три дня, поэтому любая помощь будет очень признательна!
Спасибо!
Обычно, когда у нас возникают проблемы с fopen, мы переключаемся на curl, и это решает проблему. В любом случае, проверьте свои .htaccess и ваши локальные файлы php.ini (или .user.ini) для сайта Joomla на наличие ограничений по fopen.
Других решений пока нет …