[文章作者:张宴 本文版本:v1.1 最后修改:2007.08.23 转载请注明出处:http://blog.zyan.cc]
最近在工作中遇到一个问题:a.php程序需要将接收到的数据同时写到“线上运行的正式数据库”和“进行开发调试的测试数据库”。而测试数据库可能经常会面临对表结构、字段、配置信息做调整等问题,很不稳定,发生错误的概率很高,如果用a.php程序同时写“正式数据库”和“测试数据库”,势必影响到线上运行的正式服务。
于是,我想到用PHP curl扩展库将生成的$data数组post传递一份给b.php程序,然后a.php程序继续往下执行写“正式数据库”的代码。a.php程序将$data数组传递给b.php程序就完事了,至于b.php如何处理,就不关a.php的事了,b.php程序即使写“测试数据库”失败,也不会对a.php程序造成影响。
按照这种思路,我写了a.php和b.php的代码:
a.php程序源代码:
b.php程序源代码:
备注:这两段代码需要php curl扩展库的支持,查看phpinfo(),如果cURL support enabled则表示支持curl库。
1、Windows下的PHP开启curl库支持:
打开php.ini,将extension=php_curl.dll前的;号去掉。
2、Linux下的PHP开启curl库支持:
编译PHP时在./configure后加上 --with-curl
最近在工作中遇到一个问题:a.php程序需要将接收到的数据同时写到“线上运行的正式数据库”和“进行开发调试的测试数据库”。而测试数据库可能经常会面临对表结构、字段、配置信息做调整等问题,很不稳定,发生错误的概率很高,如果用a.php程序同时写“正式数据库”和“测试数据库”,势必影响到线上运行的正式服务。
于是,我想到用PHP curl扩展库将生成的$data数组post传递一份给b.php程序,然后a.php程序继续往下执行写“正式数据库”的代码。a.php程序将$data数组传递给b.php程序就完事了,至于b.php如何处理,就不关a.php的事了,b.php程序即使写“测试数据库”失败,也不会对a.php程序造成影响。
按照这种思路,我写了a.php和b.php的代码:
a.php程序源代码:
b.php程序源代码:
备注:这两段代码需要php curl扩展库的支持,查看phpinfo(),如果cURL support enabled则表示支持curl库。
1、Windows下的PHP开启curl库支持:
打开php.ini,将extension=php_curl.dll前的;号去掉。
2、Linux下的PHP开启curl库支持:
编译PHP时在./configure后加上 --with-curl
偶来寻求帮助来了 呵呵
最近想用CURL实现获取邮件 联系人数据
弄了几天 出不来效果 教教我撒
MSN/GTALK :jstjob@gmail.com
b.php就执行了。
那么访问 http://www.abc.com/a.php 触发不了 http://www.asd.com/b.php
问题在哪里.
请问下,利用fsockopen() 和使用curl那个会更快些?
a.php在发送数据的时候是否需要等待数据发送完呢?
经过测试,这个类中的get就不好使了。
但是用这个取,就没有问题:
function curl_fetch($url) {
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_TIMEOUT,10);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT,1);
curl_setopt($c, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
$content = curl_exec($c);
$err = curl_errno($c);
$info = curl_getinfo($c);
$succ = false;
if (!$err && isset($info['http_code']) && 200 == $info['http_code']) {
$succ = true;
}
//return array($succ, $content);
return $content;
}