php代码执行过程(php文本里 php和html代码谁先执行谁啊)
本文目录
php文本里 php和html代码谁先执行谁啊
先执行PHP代码,PHP和HTML混编的时候你肯定遇到过下面的情况:《?php if(true){ ?》《div》true《/div》《?php }else{ ?》《div》false《/div》《?php } ?》上面的代码结果是浏览器显示的是《div》true《/div》如果先执行html那么结果你就发现PHP的逻辑判断就不会生效了。所以先执行的PHP,而PHP文件里的HTML代码,程序会默认为是一个字符串被PHP输出。以上代码的最终呈现效果如果全换成PHP的话将会是下面的代码:《?php if(true){echo ’《div》true《/div》’;}else{echo ’《div》false《/div》’;}?》
讨论php程序执行是线程还是进程
进程
进程是什么?进程是正在执行的程序;进程是正在计算机上执行的程序实例;进程是能分配给处理器并由处理器执行的实体。 进程一般会包括指令集和系统资源集,这里的指令集是指程序代码,这里的系统资源集是指I/O、CPU、内存等。 综合起来,我们也可以理解进程是具有一定独立功能的程序在关于某个数据集合上的一次运行活动, 进程是系统进行资源分配和调度的一个独立单位。
在进程执行时,进程都可以被唯一的表示,由以下一些元素组成:
进程描述符:进程的唯一标识符,用来和其它进程区分。在Linux中叫进程ID,在系统调用fork期间生成,只是我们通过getpid返回的不是其pid字段,而是其线程组号tgid。
进程状态:我们常说的挂起、运行等状态,其表示的是当前的状态。
优先级:进程间的执行调度相关,相对于其它进程而言。
程序计数器:程序中即将被执行的下一条指令的地址,该地址是内核术中或用户内存空间中的内存地址。
内存指针:包括程序代码和进程相关数据的指针,还有和其它进程共享内存块的指针。
上下文数据:进程执行时处理器的寄存器的数据。
I/O状态信息:包括显式的I/O请求、分配给进程的I/O设备等
记账信息:可能包括处理器时间总和、使用的时钟数总和、时间限制等
线程状态: 线程当前的状态。
一个执行栈
私有的数据区: 用于每个线程局部变量的静态存储空间
寄存器集: 存储处理器的一些状态
以上的这些元素都会放在一个叫做进程控制块的数据结构中。进程控制块是操作系统能够支持多进程和提供多处理的结构。 当操作系统做进程切换时,它会执行两步操作,一是中断当前处理器中的进程,二是执行下一个进程。 不管是中断还是执行,进程控制块中的程序计数器、上下文数据和进程状态都会发生变化。 当进程中断时,操作系统会把程序计数器和处理器寄存器(对应进程控制块中的上下文数据)保存到进程控制块中的相应位置, 进程状态也会有所变化,可能进入阻塞状态,也有可能进入就绪态。 当执行下一个进程时,操作系统按规则将下一个进程设置为运行态,并加载即将要执行进程的程序上下文数据和程序计数器等。
线程
进程有两个特性部分:资源所有权和调度执行。 资源所有权是指进程包括了进程运行所需要的内存空间、I/O等资源。 调度执行是指进程执行过程中间的执行路径,或者说程序的指令执行流。 这两个特性部分是可以分开的,分开后,拥有资料所有权的通常称为进程,拥有执行代码的可分派部分的被称之为线程或轻量级进程。
线程有“执行的线索”的意思在里面,而进程在多线程环境中被定义为资源所有者,其还是会存储进程的进程控制块。 线程的结构与进程不同,每个线程包括:
每个进程都有一个进程控制块和用户地址空间,每个线程都有一个独立的栈和独立的控制块,都有自己一个独立执行上下文。
简单说明php程序运行过程性,php预处理web服务器和数据库服务器的功
我们大家都知道PHP的强大之处,最近看到了关于PHP WEB服务器的相关知识,下面我们就这个问题和大家一起讨论一下。WAP(无线通讯协议)是在数字移动电话、个人手持设备(PDA等)及计算机之间进行通讯的开放性全球标准。由于静态的WAP页面在很多方面不能满足用户个性化的服务请求,因此通过WAP服务器端语言产生动态的WML页面,具有很广泛的应用价值和很高的商业价值。
- 浅析使用PHP逻辑运算符
- 关于Windows PHP配置应用程序服务器步骤
- 经验之谈:PHP安装设置技巧总结
- 演示PHP substr函数使用
- 关于Windows下安装PHP5配置详细介绍
WAP 应用结构非常类似于Internet,一个典型的WAP应用请求是这样的:首先,具有WAP用户代理功能的移动终端(WAP手机等)通过内部运行的微浏览器(Micro Browser)对某一网站以无线方式发送WAP服务请求。该请求先由WAP网关截获,对信息内容进行编码压缩,以减少网络数据流量,同时根据需要将WAP协议转换成HTTP协议,然后将处理后的请求转送到相应WAP服务器。在WAP服务器端,根据页面扩展名等性质,被请求的页面直接或由服务器端脚本解释后输出,再经网关传回用户。
从上述WAP应用流程可以看到,生成动态WAP页面与动态产生Web网页的过程非常类似。但是由于WAP应用使用的WML语言来源于语法严格的XML,因此要求输出的格式必须按WAP网页的规范输出。同时,由于WAP协议的应用范围、移动客户端的软硬件水平等特殊性,对每次输出的页面的大小、图像的格式及容量都有一定限制。下面我们以PHP脚本语言为例,看看如何动态输出WAP页面。
一、设置PHP WEB服务器
首先你的 Web服务器要安装好PHP,即能处理PHP脚本程序。其次,为使PHP WEB服务器能同时识别和处理PHP、WML、WBMP等文件,Web 服务器的MIME表需添加以下的几种文件类型。
- text/vnd.wap.wml .wml
- image/vnd.wap.wbmp .wbmp
- application/vnd.wap.wmlc .wmlc
- text/vnd.wap.wmls.wmls
- application/vnd.wap.wmlsc .wmlsc
二、用PHP输出简单动态WAP页面
下面有一个最简单的PHP生成WAP页面的例子。注意由于需要PHP解释器来解释该程序,并输出WAP页面,因此所有类似程序应以.php为扩展名。
- 《?php
- header(″Content-type: text/vnd.wap.wml″);
- echo (″《wml》 《card》 《p》″);
- echo date( ″l dS of F Y h:i:s A″ );
- echo (″《/p》《/card》《/wml》″);
- ?》
该例子在WAP手机模拟器中可以浏览,输出当前日期时间,而在普通的浏览器中无法识别,甚至会被认为是错误下载。这是因为在程序开头就声明了该输出文档为WML类型,该类型只有WAP设备能够识别并解释。值得注意的是,我们常见的HTML语言对规范性要求不严,大多数浏览器能“容忍”其中相当多的编写错误,而WML规范相当严格,一点失误都可能导致无法输出所需页面。
一旦我们知道了用PHP脚本输出WAP页面的标准过程,我们就能够使用PHP强大的功能配合以WML语言的交互处理以及WML s cript的简单脚本,开发出适合我们需要的应用系统了。
三、用PHP动态生成图像
WAP应用使用一种特殊黑白的图像格式WBMP。我们可以用一些工具来将已有图像转换成WBMP格式,然后在WML文档中使用。但是在WAP站点上如果能动态地生成所需图像如K线图等,将会有广阔的应用前景。幸运的是,PHP的GD库(版本1.8以上)已经提供了相应函数。
- 《?PHP
- Header(″Content-type: image/vnd.wap.wbmp″);
- Sim = ImageCreate(50, 50);
- Swhite = ImageColorAllocate(Sim,255,255,255);
- Sblack = ImageColorAllocate(Sim,0,0,0);
- ImageRectangle(Sim, 5, 5, 20, 20, Sblack);
- ImageWBMP(Sim); ImageDestroy(Sim);
- ?》
该文件将在WAP模拟器中显示一个黑色矩形框。注意要使用GD的图像函数库,必须在PHP WEB服务器配置中加载PHP_GD.DLL库文件。
四、在PHP中处理汉字
WAP作为一种全球应用,选择了UNICODE 2.0作为其标准字符集编码,以便能同时处理包括英文、中文、日文、法文等多种文字。而我们平常处理汉字使用的是GB2312编码,不同的内码标准势必不能通用,因此如果不在两种编码之间通过码表进行转换,就会出现汉字乱码现象。现在已经有较成熟的GB-2312与UNICODE编码转换的程序和函数,并在ASP、PHP、JSP等系统中使用,我们可以在一些技术站点上找到它们。
目前的大多数WAP手机(Nokia7110、爱立信 R320S等等)都是使用UTF-8编码的,也就是采用UNICODE来编码。这样,如果我们直接在WML使用中文字符(GB2312编码),将会产生乱码,手机用户无法识别,所以我们在输出中文之前,要使用程序或函数对中文进行UNICODE的编码。而在少数支持GB2312编码的手机或WAP终端设备中,我们可以在程序中定义好文档的内码类型后即可直接正确显示汉字,例如:
- 《?php
- header(″Content-type: text/vnd.wap.wml; charset=gb2312″);
- echo (″《wml》《card》《p》″);
- echo (″中文测试″);
- echo (″《/p》《/card》《/wml》″);
- ?》
用PHP编写的一行行代码 是怎么在服务器端运行的
从图上可以看到,PHP实现了一个典型的动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令 (opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。PHP本身是用C实现的,因此最终调用的也都是C的函数,实际上,我们可以把PHP看 做是一个C开发的软件。
PHP的执行的核心是翻译出来的一条一条指令,也即opcode。
Opcode是PHP程序执行的最基本单位。一个opcode由两个参数(op1,op2)、返回值和处理函数组成。PHP程序最终被翻译为一组opcode处理函数的顺序执行。
常见的几个处理函数:
1 ZEND_ASSIGN_SPEC_CV_CV_HANDLER : 变量分配 ($a=$b)
2 ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER:函数调用
3 ZEND_CONCAT_SPEC_CV_CV_HANDLER:字符串拼接 $a.$b
4 ZEND_ADD_SPEC_CV_CONST_HANDLER: 加法运算 $a+2
5 ZEND_IS_EQUAL_SPEC_CV_CONST:判断相等 $a==1
6 ZEND_IS_IDENTICAL_SPEC_CV_CONST:判断相等 $a===1
更多文章:
gb50016 2014(建筑设计防火规范gb50016-2014生活水泵房和消防水泵房可以和并吗)
2024年6月29日 07:06
奇兔购买之后可以一直用吗?手机刷机了打不开WLAN开关,蓝牙开关也打不开
2024年7月23日 17:33
google earth 4 2(我的google earth下载的是最新版4.2的,可是安装完打开后看不到地球)
2024年6月24日 23:24
win7显卡驱动安装失败(win7安装显卡驱动提示缺更新文件)
2024年8月1日 19:16
google开户(Google广告现在首次开户最低费用是多钱)
2024年7月22日 23:32