⑴ php高手看看这段代码该怎么解释
你没有PHP手册吗,查看一下fsockopen函数的说明就知道了,你的语句fsockopen("www.163.com",80,&$errno,&$errstr,10);(仔细看:你的语句少了一个$符号)表示连接主机www.163.com的80端口,错误状态、错误信息保存在$errno、$errstr变量里面,连接超时限制为10秒。
如果连接成功,那么$fp实际上是你的电脑上的一个TCP端口,可以像文件句柄一样使用这个端口,fputs写入数据表示向网络发送数据,fgets等读数据语句表示从网络读取信息。fputs和fgets都是针对网络端口,这个端口除了80表示网页以外,还可以是其它各种各样的端口,并不表示修改网页。
对于80端口,fputs是发送命令,fgets是获取结果,你的语句fputs($fp,"GET / HTTP/1.0\nHost:www.163.com\n\n"); 是发送一个GET命令,相当于在浏览器地址栏目输入地址然后请求结果的命令,按照http的协议,如果服务器执行成功,接下来就可以使用fgets获取网页内容。
补充:
我以为你只是有//?的语句不清楚。
if(!$fp)表示打开文件不成功,建立网络连接不成功。因为成功连接以后,$fp变量的值是不为false的,只有失败的时候才为false。! false的值就是true。
上面一句中,false的意思是假,true的意思是真,if语句当括号里面的结果为真时候执行if后面的语句,否则执行else后面的语句,当有else时。
补充:
你说得很对,!就是非的意思。$fp正常情况是个指针,失败的时候指针(内存地址,实际上是个INT)值就为0。
⑵ 请教:帮我分析下几段PHP代码!
$defined_vars = get_defined_vars();//获取已定义的所有变量
foreach ($defined_vars as $key => $val) {//清除用户定义的变量.
if ( !in_array($key, array('_GET', '_POST', '_COOKIE', '_FILES', 'GLOBALS', '_SERVER')) ) {
${$key} = '';
unset(${$key});
}
}
unset($defined_vars);//释放获取的变量列表.
第二段代码如下
if (isset($_GET['GLOBALS']) || isset($_POST['GLOBALS']) || isset($_COOKIE['GLOBALS']) || isset($_SERVER['GLOBALS']) || isset($_SESSION['GLOBALS']) || isset($_FILES['GLOBALS'])) {
exit;
}//如果发现任意一个GLOBALS变量已定义,则退出执行.
⑶ php 长驻内存之后 new 对象会累积吗
是会积累的。
内存从逻辑上说大体上是分为4段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明放在不同的内存段里面,数据段(datasegment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量;代码段(codesegment/textsegment)通常是指用来存放程序执行代码的一块内存区域,比如函数和方法。
栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1,10,100,1000,10000,100000等等,在内存里面占用空间是等长的,都是64位4个字节。那么数据长度不定长。
⑷ phpstorm怎么使用代码段
工具原料:phpStorm+wapmserver+计算机
配置php和写php代码方法如下:
一、进行软件下载、安装,下载exe可执行程序,按照安装程序引导下一步下一步完成phpstorm的安装,Tim安装的是phpstorm的10.0版本.
二、进入“许可证激活”窗口,选项中选择第2个单选按钮“License Server”然后在“License server address”一项中输入在参考地址里,然后点击“OK”按钮即可。
三、然后打开 就可以看到开始界面了
四、接下来 要配置wampServer,就是配置php的运行环境,先要下载wapmServer这款软件,然后点击运行,按照引导安装完毕,Tim安装的是2.5版本,支持php5.6,
五、完成安装之后,要记住安装的目录,等会要引用它。我们打开File->Settings->php(找不到可以搜索php,是languages&Frameworks下的php),配置php解析程序安装路径,Tim安装的路径是在D盘。
六、然后打开路径,找到你的php.exe。这是它的路径\wamp\bin\php\php5.5.12 如图所示
七、然后重启phpStorm。就可以编写php代码了
⑸ 这段PHP代码什么意思
$ckpass=md5(md5($rnd.$set_loginrnd).'-'.$rnd.'-'.$username.'-');//先将$rnd和$set_loginrnd变量进行拼接,然后计算md5值,然后将这个md5值拼上一个-,变量$rnd,再加-$username-拼接,最后求一次md5值,将结果赋值给$ckpass
esetcookie("loginebakckpass",$ckpass,0);//设置一个内存coolie(浏览器关闭即清除,第3个参数控制),名字为loginebakckpass,值为上面计算的值
$pollarray['options']=$polloption;//将$pollarray数组中key为option的值设为$polloption的值
⑹ php 内存使用方面的教程。如一段代码,php是如何调用并执行的。
你有没有想过PHP是怎么在浏览器里输出“你好世界”的?我也是看了PHP内核和扩展后才知道的。也许有些朋友也想知道其中原理,那就让我们开始吧。
在上一篇网志里我简单介绍了“在我浏览这个页面之前都发生了些什么?”这个问题。如果你错过了就点这里看看吧。现在我要讨论的是“PHP是怎样在浏览器里输出内容”这个问题。
简介
先看看下面这个过程:
1. 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;
2. PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);
3. PHP总共有三个模块:内核、Zend引擎、以及扩展层;
4. PHP内核用来处理请求、文件流、错误处理等相关操作;
5. Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;
6. 扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;
7. 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;
8. 最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。
深入探讨
等等,没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。
1. Apache启动后,PHP解释程序也随之启动;
2. PHP的启动过程有两步;
3. 第一步是初始化一些环境变量,这将在整个SAPI生命周期中发生作用;
4. 第二步是生成只针对当前请求的一些变量设置。
PHP启动第一步
不清楚什么第一第二步是什么?别担心,我们接下来详细讨论一下。让我们先看看第一步,也是最主要的一步。要记住的是,第一步的操作在任何请求到达之前就发生了。
1. 启动Apache后,PHP解释程序也随之启动;
2. PHP调用各个扩展的MINIT方法,从而使这些扩展切换到可用状态。看看php.ini文件里打开了哪些扩展吧;
3. MINIT的意思是“模块初始化”。各个模块都定义了一组函数、类库等用以处理其他请求。
一个典型的MINIT方法如下:
PHP_MINIT_FUNCTION(extension_name){
/* Initialize functions, classes etc */
}
PHP启动第二步
1. 当一个页面请求发生时,SAPI层将控制权交给PHP层。于是PHP设置了用于回复本次请求所需的环境变量。同时,它还建立一个变量表,用来存放执行过程中产生的变量名和值。
2. PHP调用各个模块的RINIT方法,即“请求初始化”。一个经典的例子是Session模块的RINIT,如果在php.ini中启用了Session模块,那在调用该模块的RINIT时就会初始化$_SESSION变量,并将相关内容读入;
3. RINIT方法可以看作是一个准备过程,在程序执行之间就会自动启动。
一个典型的RINIT方法如下:
PHP_RINIT_FUNCTION(extension_name) {
/* Initialize session variables, pre-populate variables, redefine global variables etc */
}
PHP关闭第一步
如同PHP启动一样,PHP的关闭也分两步:
1. 一旦页面执行完毕(无论是执行到了文件末尾还是用exit或die函数中止),PHP就会启动清理程序。它会按顺序调用各个模块的RSHUTDOWN方法。
2. RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。
一个典型的RSHUTDOWN方法如下:
PHP_RSHUTDOWN_FUNCTION(extension_name) {
/* Do memory management, unset all variables used in the last PHP call etc */
}
PHP关闭第二步
最后,所有的请求都已处理完毕,SAPI也准备关闭了,PHP开始执行第二步:
1. PHP调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会。
一个典型的RSHUTDOWN方法如下:
PHP_MSHUTDOWN_FUNCTION(extension_name) {
/* Free handlers and persistent memory etc */
}