进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl
执行phpize生成编译文件,phpize在PHP安装目录的bin目录下
运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and
the $PHP_AUTOCONF
environment variable is set correctly and then rerun this
script.,需要安装autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install
autoconf(Ubuntu Linux)
执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,
这里会报错,可以根据错误信息去排查!
这里就简单介绍两种:
第一段:增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间.
我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的.真正的修改file_get_contents延时可以用resource
$context的timeout参数:
复制代码
代码如下:
$opts
=
array(
'http'=array(
'method'="GET",
)
);
$context
stream_context_create($opts);
$html
=file_get_contents('',
false,
$context);
fpassthru($fp);
第二段:一次有延时的话那就多试几次
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回
FALSE,所以可以下面这样编写代码:
$cnt=0;
while($cnt
$cnt◆◆;
具体代码如下:
php
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法.
它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快.
①由于数据库设计问题造成SQL数据库新增数据时超时
症状:
服务器上看CPU、内存占用率很低;
原因:
数据库设置时,[文件增长]按百分比来增长,当数据库文件很大时(1G以上),新增操作都会报超时,而这时候其实CPU、内存占用率都非常非常的低.
解决方法:
把上述的文件增长这里设置为一个更低的百分比或者直接指定增加多少兆字节.
企业管理器中的设置:
在企业管理器中,选择菜单上的"工具",再选择"选项";
查询分析器中的设置:
单击"工具"-"选项"-"连接"; 将登录超时设置为一个较大的数字,连接超时改为0.
原因分析:
查询超时一般来说首先要从sql语句和数据表的结构上找原因,优化sql语句和为数据库的查询字段建索引是最常用的办法.
而造成超出估计值那么多的原因有两种可能:
估计时间不准确;
sql语句涉及到大量占用内存的查询(如排序和哈希操作),内存不够,需要排队等待资源造成的.
解决办法:
优化语句,创建\使用合适的索引;
解决第一个问题的方法,更新要查询表的索引分发统计,保证估计时间的正确性,UPDATE STATISTICS 表名;
增加内存
如果想手动设置查询超时,可以使用以下语句:
故障:
在应用程序中我们也会遇到类似的错误信息,例如:
A.如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接.例如:
B. 如果遇到查询超时的错误,我们可以在程序中修改 Recordset 对象的超时设置,再打开结果集.例如:
另外,一些硬件及网络方面的原因也可能造成SQL数据库连接超时.
//HttpClient功能很强大,可以和snoopy一样实行模拟数据提交等操作
使用静态方法quikGet(ur)或者quickPost(url)无法做到设置超时时间,所以做了如下修改,通过下面的方法可以实现
//设置时间超时
$bits = parse_url($main_url);
$host = $bits['host'];
$path = isset($bits['path']) ? $bits['path'] : '/';
if (isset($bits['query'])) {
echo $path .= '?'.$bits['query'];
}
// $client = new HttpClient($main_url);
//$client-setDebug(false);
$client = new HttpClient($host, $port);
$client -timeout =10;
if (!$client-get($path)) {
return false;
} else {
$pageContents = $client-getContent();
//