我正在为Joomla编写身份验证插件。 该插件正在调用外部站点以验证用户名和密码。
代码有效,但我的问题是,当我从Joomla插件调用fopen()时,它需要很长时间(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
我现在已经三天了,所以任何帮助都会非常感激!
谢谢!
答案 0 :(得分:0)
通常当我们遇到fopen问题时,我们会切换到curl并解决问题。在任何情况下,检查您的.htaccess和您的本地php.ini(或.user.ini)文件,以获取对fopen的任何限制。