php实现多线程
转:http://blog.iyi.cn/start/
问题:
有没有办法在php中实现多线程呢?
假设你正在写一个基于多台服务器的php应用,理想的情况时同时向多台服务器发送请求,而不是一台接一台。
可以实现吗?
回答:
当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如perl。
其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。
假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转。你可能会写下面这样的代码:
<?php
$hosts = array("host1.sample.com", "host2.sample.com", "host3.sample.com");
$timeout = 15;
$status = array();
foreach ($hosts as $host) {
$errno = 0;
$errstr = "";
$s = fsockopen($host, 80, $errno, $errstr, $timeout);
if ($s) {
$status[$host] = "Connectedn";
fwrite($s, "HEAD / HTTP/1.0rnHost: $hostrnrn");
do {
$data = fread($s, 8192);
if (strlen($data) == 0) {
break;
}
$status[$host] .= $data;
} while (true);
fclose($s);
} else {
$status[$host] = "Connection failed: $errno $errstrn";
}
}
print_r($status);
?>
它运行的很好,但是在fsockopen()分析完hostname并且建立一个成功的连接(或者延时$timeout秒)之前,扩充这段代码来管 理大量服务器将耗费很长时间。
因此我们必须放弃这段代码;我们可以建立异步连接-不需要等待fsockopen返回连接状态。PHP仍然需要解析hostname(所以直接使用ip更 加明智),不过将在打开一个连接之后立刻返回,继而我们就可以连接下一台服务器。
有两种方法可以实现;PHP5中可以使用新增的stream_socket_client()函数直接替换掉fsocketopen()。PHP5之前的 版本,你需要自己动手,用sockets扩展解决问题。
下面是PHP5中的解决方法:
<?php
$hosts = array("host1.sample.com", "host2.sample.com", "host3.sample.com");
$timeout = 15;
$status = array();
$sockets = array();
/* Initiate connections to all the hosts simultaneously */
foreach ($hosts as $id => $host) {
$s = stream_socket_client("$host:80", $e
相关文档:
操作系统CentOS 5.3
系统安装完成后,安装必要的包
yum install autoconf gcc gcc-c++ libjpeg libjpeg-level
libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs ......
先安装apache http server 一路next;
再安装php,注意选择 Apache 2.2.x Module;
安装结束以后,还需要修改 Apache 的配置文件。文件路径为
C:\Program Files\Apache
Software Foundation\Apache2.2\conf\httpd.conf。
用 Notepad 打开
httpd.conf,在文件最后有以 #BEGIN PHP INSTALLER EDITS - RE ......
中国知名电子商务供应商(排名不分先后)
SHOPEX
网址:www.shopex.cn
简介:国内使用人数最多的免费独立B2C网店管理软件。
特色:品牌老、用户多,模板众多,模板费用低廉。主要面向个人用户,产品的附属配件多,功能全面.免费网店系统的老大哥。但面对企业用户时,基础软件不适合,定制开发要求又太高。
第二位、ECSH ......
实例一:无参的存储过程
$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");
mysql_select_db('test',$conn);
$sql = "
create procedure myproce()
begin
INSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');
end;
";
mysql_query($sql);//创建一个myproce的存储过程
......
操作系统: windows xp
php版本:5.2.5 http://www.php.net/downloads.php
Apache http server 版本:2.2.6http://httpd.apache.org/download.cgi
Mysql版本: 6.0.3http://dev.mysql.com/get/Downloads/MySQL-6.0
1.apache的安装:
1)双击apache_2.2.6-win32-x86-no_ssl.msi图标,启动apache安装程序;
2)安装以一个欢迎 ......