解决方案 »
- 分享:WordPress静态化实用工具cos-html-cache使用方法
- 用php如何实现ftp方式的文件上传功能?服务器上搭建了web服务和ftp服务,如何将客户端的文件上传至服务器?
- 想开发一个拍卖系统,用什么框架比较好呢?
- memcache安装不成功
- bosS要我在网站上添加一个英文页面啊,没做过
- 求助 windowsXP系统 PHP搭建
- 怎么产生这么一组数据
- thinkphp中如何通过执行sql语句创建数据表
- 请高手帮忙解密一下$O00OO0 = urldecode( 希望能提供一下解密方法
- 多用户开网店
- TP里面的Upload类的疑问
- 各位大虾们,谁有关于php动态网站的毕业设计论文啊···急求!
如果你要用php对外开放服务,可以考虑使用webservice。
我已经把开放的端口,通过服务器配置,指定区访问一个文件,不知道这个做法是不是对的
目前我开放的端口,我自己测试,总提示我这个端口已经使用。
对方访问通过网站发送数据,我就把端口httpd使用了,是否这样配置不正确?
所以通讯时需要先打开一个周知的端口,一旦监听到该端口有信息时
就需要打开一个空闲端口,并将该端口通知对方,用于后续的通讯服务方的主监听程序需要常驻内存,只能启动一次
通讯是通过子进程进行的需要注意的是:php 适合做客户端,而不适合做服务端
可能以后更高的版本会有所改变,至少在php5.5也还是没有改变(虽然已经列入开发计划)
https://github.com/walkor/workerman开发文档在:http://www.workerman.net/documentation
安装部署开发都非常方便。如果有啥不明白,可以随时联系我
//server.php
set_time_limit(0);
// Set up our socket
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
socket_bind($socket, '192.168.10.224', 50004);
socket_listen($socket,5);
// Initialize the buffer
$buffer = "";
while(true)
{
$run=file_get_contents("./run.txt");
if($run==0)break;
// Accept any connections coming in on this socket
$connection = socket_accept($socket);
printf("Socket 链接中\r\n");
// Check to see if there is anything in the buffer
if($buffer != "")
{
printf("写入开始 缓冲区内容发送..\r\n");
socket_write($connection, $buffer . "\r\n");
printf("写入结束 \r\n");
}
else
{
printf("缓冲区无数据\r\n");
}
// Get the input socket_read($connection, 1024)
while($data = socket_read($connection, 4096))
{
if($run==0)break;
$buffer = $data;
//写入客户端数据
file_put_contents("./txt.txt", json_encode($data)."\n",FILE_APPEND);
socket_write($connection, "Information Received\r\n");
printf("读结束 缓冲区内容: " . $buffer . "\r\n");
}
socket_close($connection);
printf("关闭 socket\r\n\r\n");
}//命令行里 输入: php server.php//client.php 直接浏览器访问
$stime = microtime(true);
$fp = stream_socket_client("tcp://192.168.10.224:50004", $errno, $errstr, 30,STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp,$msg,mb_strlen($msg));
echo fread($fp, 4096)."\n";
fclose($fp);
}$etime = microtime(true);echo "Time: " . ($etime - $stime) . "n";
//我目前杀掉占用端口太麻烦,直接用文件控制退出 。run.txt 文件存 0或1