文章目录:
如何使用PHP的交互式运行环境
从PHP 5.1.0开始,CLI SAPI提供了一个交互式命令行工具(Interactive shell),这个交互式PHP shell是通过使用 –with-readline 编译选项集成到php内核里的。使用这个交互式shell,你可以直接在命令行窗口里输入PHP并直接获得输出结果。
开启PHP的交互式shell模式,需要使用 -a 参数。下面是使用交互式shell的一些例子。
$ php -a
Interactive shell
php echo 5+8;
13
php function addTwo($n)
php {
php { return $n + 2;
php { }
php var_dump(addtwo(2));
int(4)
php
在交互式shell里,你可以使用 tab 键对函数名,内置变量,类名,静态方法等进行自动补全操作。
需要注意的是,Interactive Shell 和 Interactive Mode 并不是一个东西,尽管名称和功能都很相似。
如果你输入 php -a ,得到的回应是 ‘Interactive Shell’ 并跟随着 ‘php’ 提示符,那你使用的就是交互式shell。如果你得到的回应是 ‘Interactive mode enabled’ ,说明你的PHP并不支持交互式shell,上面介绍的用法也不实用于你。
但也不用担心,Interactive mode(交互模式)也可以在命令行窗口里执行PHP代码,只是代码的执行方式有些区别。在PHP交互模式(Interactive mode)里,你在命令行窗口里输入PHP代码,代码不会立即执行,当你输入了所有PHP代码后,输入 Ctrl-Z (windows里),或输入 Ctrl-D (linux里),你输入的所有代码将会一次执行完成并输出结果。
在PHP交互模式(Interactive mode)里,跟交互式shell里不一样,你的代码需要以 ?php 开头,跟你的普通PHP文件里的写法一致。下面是在Windows里的使用例子。
C:\php -a
Interactive mode enabled
?php
echo "Hello, world!";
?
^Z
Hello, world!
在Winidows里,没有交互式shell,只有Interactive mode。
想用PHP做Socket服务器,不知道如何实现同时和多个不同客户端数据交互?
因为只有调用了accept客户端才能连上,你如果accept下面接一个循环,那么第二个用户不是说能不能进这个循环,而是连不进……此时只有第一个用户break出了循环,然后程序回头再调用accept,第二个用户才能连上。
用多进程来处理如何?因为accept一个客户端以后,应该是马上准备accept下一个客户端才对,而不是处理完现在这个客户端才accept下一个客户端。
socket_accept以后,直接调用
pcntl_fork(),此时进程会分裂为两个,其中一个的pnctl_fork返回值是0,另一个不是0。不是0的那个直接继续调用socket_accept即可,是0的那个处理客户端请求。
pnctl_fork不知道在windows下能不能用。
不过返回不是0的那个进程并不是这样就完事了,还要调用pcntl_wait防止子进程卡在那边没有完全结束。你可以在主进程里时不时就调用这个,配上WNOHANG作为option参数防止没有子进程需要wait的时候卡在那边。
这都是linux下常用的处理手段。说实话本来我想让你用多线程的,不过看了一圈不知道php里怎么用线程,倒是找到了用进程的方式,所以就
如何与PHP服务器交互
首先需要知道两个东西,一个是客户端,一个是服务器,客户端其实就是我们在上网时候使用的机器,大部分情况下这个客户端就是我们的电脑,包括台式电脑,笔记本电脑,手机,平板之类的
服务器其实也是电脑,准确的说服务器是性能比较强大的电脑,正常情况下一台服务器可以连续半年甚至一年不关机,连续运行,这个技能我们家用电脑大多做不到。正是因为服务器可以保持长时间的运行,从而保证我们放在服务器上文件可以随时都被访问到.
也是电脑,准确的说服务器是性能比较强大的电脑,正常情况下一台服务器可以连续半年甚至一年不关机,连续运行,这个技能我们家用电脑大多做不到。正是因为服务器可以保持长时间的运行,从而保证我们放在服务器上文件可以随时都被访问到.
式命令行工具(Interactive shell),这个交互式PHP shell是通过使用 –with-readline 编译选项集成到php内核里的。使用这个交互式shell,你可以直接在命令行窗口里输入PHP并直接获得输出结果。开启
回值是0,另一个不是0。不是0的那个直接继续调用socket_accept即可,是0的那个处理客户端请求。pnctl_fork不知道在windows下能不能用。不过返回不是0的那个进程并不是这样就完事了,还要
,配上WNOHANG作为option参数防止没有子进程需要wait的时候卡在那边。这都是linux下常用的处理手段。说实话本来我想让你用多线程的,不过看了一圈不知道php里怎么用线程,倒是找到了用进程的方式,所以就如何与PHP服务器交互首先需要知道两个东西,一个是客户端,一个是服务器,客户端其实就是