导航:首页 > 源码编译 > php编译执行过程

php编译执行过程

发布时间:2024-06-26 19:31:54

‘壹’ 如何使用Notepad++编译运行php

1、Notepad++只是一个编辑一些文件的代码,不能让它来运行php,如果您想在本地运行php,就必须用WampServer或者APPServer,这两款就是专门用于运行php的。
2、PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

‘贰’ 怎样编译PHP文件

不需要编译的,把PHP文件拷贝到你的网页目录里面,在地址栏输入:http://127.0.0.1/*.php就可以了

补充:
大家说得非常明白了,你自己写的PHP程序,鼠标双击就可以运行,不需要编译。如果双击的时候问你用什么打开,你就选择你自己安装的PHP.EXE文件。

多数情况PHP写的程序是在网页上用的,如果你也是写的网页程序,那就放在网页文件夹下,用浏览器使用http://127.0.0.1/***.php来打开运行。

反正无需编译,直接解释运行。

‘叁’ php代码执行顺序

php代码理论上是从上到下的执行顺序,但是也不是你这样理解!

他最终的输出内容,是根据你写的php代码的逻辑进行判断输出的!

比如:

$i=10;
if($i==20){
echo'您好!'
}else{
echo'太好了';
}

这段代码执行顺序确实是从上到下,但并不是说, echo '您好' 在echo '太好了' 的上面,那就一定会 输出 “您好”这两个字,

而是你看的逻辑

首先 $i 等于10,

所以 if ( $i == 20 )这个条件是不成立的

所以最终输出的结果是 ”太好了“3个字!


php所谓的代码从上到下的执行顺序,那是对于php服务器端而言, 最终你在终端看到的结果, 是以代码的逻辑思维为准!

‘肆’ PHP缓存技术的PHP编译缓存

目前最常见的PHP编译缓存工具有:APC,Accelerator,xcache(国产)等。
PHP是一种解释型语言,在PHP语言执行代码的时候,需要下面两步:
1、编译过程。PHP读取文件,并编译该文件,然后生成能够在Zend Engine虚拟机上执行的中间码。
2、执行过程。PHP直接执行中间码。
以下两种情况,会导致PHP运行程序代码效率低下:
1、即使PHP代码文件没有发生改变,也会被PHP重新编译。
2、如有引用文件,PHP也要花费时间重新编译这些被引用的文件。
因此,需要PHP编译缓存工具对PHP程序的编译结果做缓存处理。这样,PHP程序只要编译一次,就不要重新再做无意义的编译了。

‘伍’ 濡备綍浣跨敤Notepad++缂栬疟杩愯宲hp

鏂规硶/姝ラ

瀹夎卬otepad++锛
瀹夎呭緢绠鍗曪纴阃夋嫨榛樿よ剧疆锛屼笅涓姝ュ嵆鍙銆傚彲浠ラ夋嫨瀹夎呰矾寰勚

瀹夎呭畬鎴愬悗锛屽嵆鍙鐪嫔埌Notepad++镄勪腑鏂囩晫闱銆

鏂板缓涓涓猵hp鏂囨。锛屽唴瀹瑰备笅銆傝緭鍑衡淗ello World钬濄

瀹夎呯紪璇戣繍琛屾枃浠剁殑鎻掍欢銆傛彃浠-Plugin Manager-Show Plugin Manager銆

镓惧埌NppExec鎻掍欢锛屼粠杩欎釜鎻掍欢镄勫悕瀛楁潵鐪嫔氨鏄钖勪綅鏂囦欢镄勬墽琛屻傜偣鍑筹nstall銆傞渶瑕佷笅杞藉畨瑁咃纴濡傛灉澶辫触鍙鑳芥槸缃戠粶涓嶅ソ锛屽啀璇曞嚑娆″嵆鍙銆

閲嶆柊钖锷∟otepad++锛屽畬鎴愭彃浠跺畨瑁呫傛彃浠-NppExec-Execute锛岀偣鍑绘墽琛岋纴鎴栫洿鎺ユ寜F6銆

鍦ㄥ脊鍑虹殑锻戒护杈揿叆绐楀彛涓杈揿叆涓涓嫔懡浠わ细
cd $(CURRENT_DIRECTORY)
D:\AppServ\php5\php.exe$(FULL_CURRENT_PATH)
锻戒护镄勫惈涔夋槸锛岃繘鍏ュ綋鍓嶆枃浠剁洰褰曪纴浣跨敤宸插畨瑁呯殑php.exe鏂囦欢杩愯岃ユ枃浠躲侱:\AppServ\php5\php.exe涓簆hp镄勫畨瑁呰矾寰勚

镣瑰嚮OK钖庯纴杩愯岃php鏂囦欢銆

‘陆’ php运行机制是什么

PHP是一种纯解释型在服务端执行的可以内嵌HTML的脚本语言,尤其适合开发Web应用程序。
请求一个 PHP 脚本时,PHP 会读取该脚本,并将其编译为 Zend 操作码,这是要执行的代码的一种二进制表示形式。随后,此操作码由 PHP 执行并丢弃。 PHP脚本在每次被解释时进行初始化,在解释完毕后终止运行。这种运行是互相独立的,每一次请求都会创建一个单独的进程或线程,来解释相应的页面文件。页面创建的变量和其他对象,都只在当前的页面内部可见,无法跨越页面访问。在终止运行后,页面中申请的、没有被代码显式释放的外部资源,包括内存、数据库连接、文件句柄、Socket连接等,都会被强行释放。也就是说,PHP无法在语言级别上实现直接访问跨越页面的变量,也无法创建驻留内存的对象。
PHP这种独特的工作模型的优势在于,基本上解决了令人头疼的资源泄漏问题。Web应用的特点是大量的、短时间的并发处理,对各种资源的申请和释放工作非常频繁,很容易导致泄漏甚至崩溃。PHP的运行机制决定它不存在常规的崩溃问题(顶多连接超时脚本停止执行),可以说PHP是较稳定的Web应用。但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。这种缓冲机制缺失造成的影响,可以分成两个方面:
一是对象的缓冲。众所周知,很多设计模式都依赖于对象的缓冲机制,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源,对于需要频繁应付大量并发的服务端软件更是如此。因此,对象缓冲的缺失,理论上会极大地降低速度。应尽可能减少创建和销毁对象的次数来提高服务程序的效率,由于 PHP目前还不支持多线程,也就无法像Java一样通过线程池调度来弥补这一缺陷;但可以使用第三方软件如Memcachd来实现PHP的对象缓冲机制,达到减少对象创建和销毁的时间来提高服务程序的效率。Memcachd将PHP编译后的 操作码缓存并在内存中保存这个操作码,并在下一次调用该页面时重用它,这会节省很多时间。比较常用的缓存还有有 eAccelerator,另一种流行的 eAccelerator 替代工具是 Alternative PHP Cache(APC)。
二是数据库连接的缓冲。对于MySQL,PHP提供了一种内置的数据库缓冲机制,即用mysql_pconnect()代替mysql_connect() 来打开数据库而已。PHP会自动回收被废弃的数据库连接,以供重复使用。在实际应用中,这种持久性数据库连接往往会导致数据库连接的伪泄漏现象:在某个时间,并发的数据库连接过多,超过了MySQL的最大连接数,从而导致新的进程无法连接数据库。但是过一段时间,当并发数减少时,PHP会释放掉一些连接,网站又会恢复正常。出现这种现象的原因是,当使用pconnect时,Apache 的httpd进程会不释放connect,而当Apache的httpd进程数超过了mysql的最大连接数时,就会出现无法连接的情况。因此,需要小心地调整Apache和Mysql的配置,以使Apache的httpd进程数不会超出MySQL的最大连接数。笔者经过实践,在PHP5和 Oracle10g的连接中,由于频于数据库连接,有时候还会出现数据库丢失连接的情况(Oracle官方有针对PHP的增强包,不知是否可以解决此问题,笔者未试)。
PHP的工作模型即是缺点也是优势,从本质上说,这就是PHP 的独特之处。
若以FastCGI模式运行php,解析php.ini、载入全部扩展并重初始化全部数据结构这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。Nginx+PHP(FastCGI)是个不错的选择。

‘柒’ 如何编译安装PHP扩展

一开始安装PHP的时候,我们并不知道需要哪些扩展,所以只有等到我们真正用到的时候才想办法去安装。
安装PHP扩展最简单的办法就是
sudo apt-get install php5-xxx

但有的时候并非我们所愿,源里面并没有我们需要的扩展,这时候就需要我们下载源码自己编译安装了。
这篇文章中我将介绍在本地Linux平台下编译安装PHP扩展的方法。
现在网站根目录下创建 index.php 打印基本的配置信息,以验证我们是否安装成功。
配置编译环境
我们需要安装一些编译必须的库,还有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev

Fedora
sudo yum install php-devel php-mysqlnd gcc libtool

RHEL
sudo yum install php-devel php-mysql gcc libtool

Suse
yast2 -i php5-pear php5-devel php5-mysql gcc

安装扩展
PHP有两种可供安装的扩展:一种是PHP原生的但是默认没有安装的,另一种的第三方开发的扩展。
下面依次介绍两种扩展的安装方法:
安装之前我们需要一份和当前机器上相同版本的PHP源码
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9

前往此处 下载相应的源码包。
在 /ext 目录下面可以看到所有PHP原生的扩展。
安装原生扩展
以 PHP-intl 为例,这是PHP国际化的扩展。
为了安装这个扩展我们需要先安装ICU 库
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg

ICU 安装成功之后进入/ext/intl 目录:
cd intl
phpize
./configure --enable-intl
make
sudo make install

下面解释一下上面的每个命令:
phpize : 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
./configure --enable-intl: 配置编译环境,相当于告诉编译器编译PHP源码的时候加上intl这个扩展。
make: 将会把源码编译成 intl.so
make install : 将会把 intl.so 移动到当前安装的 PHP 的扩展目录。
接下来我们要做的就是在php.ini中启用这个扩展,这一步将会在最后给出示例。
安装第三方扩展
将以这个 扩展为例,这个扩展主要实现了PHP识别条形码的功能。
先安装必要的依赖
sudo apt-get install pkg-config

git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install

将会生成一个文件,将其拷贝到PHP的扩展目录下面。
启用扩展
在php.ini中启用扩展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,这是最简单直接的方法。
也可以单独建一个ini文件,然后在php.ini中包含这些文件就可以了。
下面介绍一下第二种方法:
cd `/etc/php5/mods-available`

这个目录里可以放新建的ini文件,然后执行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini

上面的命令将会创建ini文件,并且写如相应的配置信息。
然后执行下面的命令启用扩展即可(需要安装 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl

如果未安装 php5enmod 工具,则需要手动配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini

最后在执行一下重启操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart

‘捌’ PHP - php7缂栬疟瀹夎呭强鏂扮壒镐


鎺㈢储PHP涓栫晫镄勬柊绾鍏冿细娣卞叆瀛︿範PHP 7镄勭紪璇戝畨瑁呭强鍏跺崜瓒婃ц兘鎻愬崌


鐜澧冨嗳澶</
涓轰简娣卞叆浜呜ВPHP 7镄勫簳灞傚师鐞嗭纴骞朵负寮鍙戞墿灞曟垨妗嗘灦濂犲畾鍧氩疄锘虹锛屾垜浠寤鸿鍦–entOS 7涓婅繘琛岋纴Docker鎶链镄勮繍鐢ㄤ娇寰楁暣涓杩囩▼镟翠负渚挎嵎銆备粠php-7.4.28鎴5.6.37婧愪唬镰佸簱涓嬭浇锛岃繘琛岃В铡嫔拰缂栬疟銆傜紪璇戣繃绋嬩腑锛屽傛灉阆囧埌阌栾锛屽埆蹇树简瀹夎呭繀瑕佺殑渚濊禆锛屽俫cc銆乬cc-c++锛屼互鍙妜ml2-config鍜宱penssl-devel绛夛纴瀹冧滑鏄鏋勫缓鎴愬姛镄勫叧阌銆
镐ц兘椋炶穬瑙佽瘉</
缂栬疟瀹夎呭畬鎴愬悗锛屽规瘆娴嬭瘯缁撴灉浠や汉鐪煎墠涓浜锛氱浉杈冧簬php5.6镄勮楁椂12.813s锛宲hp7.1.0浠呴渶5.122s锛岃宲hp8镟存槸浠3.780s镄勬侪浜洪熷害鑳滃嚭锛屾ц兘鎻愬崌鏄捐宪銆傝╂垜浠阃氲繃瀹为檯绀轰緥𨱒ユ劅鍙楄繖阃熷害镄勯炶穬锛歱hp5.6镄勭亩鍗曟祴璇曡楁椂0.452s锛宲hp7.1.0鎻愬崌鍒颁简0.182s锛岃宲hp8镟存槸灏呜繖涓镞堕棿铡嬬缉鍒颁简0.063s銆俶andel鍜宻ieve绛夊嶆潅浠诲姟镄勬墽琛岄熷害钖屾牱链夋樉镢楁彁鍗囷纴php8镄勬ц兘浼桦寲鍙瑙佷竴鏂戙


鏂扮壒镐ф彮绀</


PHP 7镄勫埌𨱒ュ甫𨱒ヤ简浼楀氶潻鏂扮壒镐э纴璁╁紑鍙戞洿涓洪珮鏁埚拰浼橀泤锛

  1. 澶绌鸿埞镎崭綔绗︼纸锛</锛氱亩鍖栦简姣旇缉镎崭綔锛屾彁鍗囦简浠g爜镄勫彲璇绘с

  2. 绫诲瀷澹版槑锛圱ype Declarations锛</锛氩炲己绫诲瀷妫镆ワ纴鎻愬崌浠g爜镄勫仴澹镐с

  3. null钖埚苟镎崭綔绗︼纸Null Coalescing Operator锛</锛氱亩鍖栦简瀵筺ull鍊肩殑澶勭悊锛屾彁楂树简浠g爜镄勭亩娲佹с

  4. NameSpace镓归噺瀵煎叆锛圔atch Import of Namespaces锛</锛氱亩鍖栦简锻藉悕绌洪棿镄勫紩鐢锛屾彁楂桦紑鍙戞晥鐜囥

  5. throwable鎺ュ彛锛圱hrowable Interface锛</锛氭彁鍗囦简寮傚父澶勭悊镄勬爣鍑嗗寲锛屽炲己浠g爜镄勫彲缁存姢镐с

  6. list镄勬嫭鍙峰啓娉曪纸List Parentheses Syntax锛</锛氭彁渚涗简镟寸洿瑙傜殑鍒楄〃镎崭綔鏂瑰纺锛屾彁鍗囦唬镰佺殑鍙璇绘с

  7. 鎶借薄璇娉曟爲锛圆ST锛孉bstract Syntax Tree锛</锛氭敮鎸佹洿楂樼骇镄勮娉曞垎鏋愶纴涓虹紪璇戝櫒浼桦寲镓揿紑鏂伴棬銆


浠庢暣浣扑笂鐪嬶纴PHP 8涓崭粎鍦ㄦц兘涓婂疄鐜颁简鏄捐宪鎻愬崌锛岃缮寮曞叆浜嗕竴绯诲垪鎻愬崌寮鍙戜綋楠屽拰浠g爜璐ㄩ噺镄勬柊鐗规с傝繖镞犵枒涓篜HP寮鍙戣呬滑鎻愪緵浜嗘洿寮哄ぇ銆佹洿楂樻晥镄勫紑鍙戝伐鍏凤纴璁╂垜浠鍏卞悓链熷緟PHP 7鍦ㄦ湭𨱒ョ殑镟村氩彲鑳姐

阅读全文

与php编译执行过程相关的资料

热点内容
解压音乐排名 浏览:383
安卓手机浏览器怎么扫二维码 浏览:715
通达信成本均线源码 浏览:614
可以下载的解压音频 浏览:564
海贼王怎么换服务器 浏览:318
计算机上的共享文件夹映射 浏览:940
荣耀安装包在文件夹哪里 浏览:195
机票php源码 浏览:231
linux共享mac 浏览:922
中国没有国外的服务器地址 浏览:759
为什么退款服务器连接错误 浏览:557
android短信存储位置 浏览:972
unix网络编程卷4 浏览:808
找靓机app下单什么时候发货 浏览:413
android一个应用两个进程 浏览:803
linux硬盘复制 浏览:808
php图片服务器搭建 浏览:801
下载压缩文件怎么打开 浏览:194
新建文件夹叫什么名字 浏览:567
windows20的开机命令 浏览:335