只需要四步,就能完成PHP搭建
搭建php的方法主要分为独立安装和集成安装两种,独立安装需要分别下载apache,mysql和php,而集成只需要下载一个软件安装包,比较简单,很适合新手。集成安装包有WampServer、appserv、easyphp等,下面我们以WampServer为例教大家搭建php开发环境。
一. 确定自己的电脑系统位数
右击桌面上的电脑图标,打开属性界面,在系统—>系统类型中查看操作系统的位数。如图,笔者的为64位。
二.根据系统位数下载对应版本的wampserver并安装(安装过程比较简单,这里不做说明)
所需软件已打包到网盘,链接: http://pan.baidu.com/s/1eQ2iYoa 密码: 7qng
注:如果安装wampserver过程中提示缺少msvcr110.dll,此时需要根据系统平台环境安装相应的visual c++或者vc++(见网盘)
安装完成后打开应用桌面右下角会出现一个小图标,小图标显示绿色则安装正常。
三. 语言切换
用鼠标左击小图标会发现菜单栏都是英文,这里只需要右击图标->Language->chinese,即可切换到中文版。
WampServer中php版本的切换(选看,对新手不做要求)
由于做项目经常要用到不同版本的php,这里简单给大家演示一下版本的切换,这里以5.6.6版本为例。
1、查看默认版本
2、将php5.6.6的文件夹拷贝到C:\\wamp\\bin\\php\\下
3、去C:\\wamp\\bin\\php\\php5.5.12目录下拷贝两个文件,一个是wampserver.conf。另一个是phpForApache.ini,复制到php5.6.6目录下。
4、修改php5.6.6目录下的phpForApache.ini,修改一处内容,如下图所示:
修改完成之后,记得保存文件!然后重新启动Wampserver,这时候就可以进行版本切换了。
四. Php环境变量的设置
1、打开我的电脑->属性->高级
2、点击环境变量,进入环境变量配置界面
3、点击Administrator的用户变量下面的新建按钮:
变量名:path
变量值:php.exe的文件路径
4、然后下面的系统变量中:
选中path,点击编辑
在变量值一栏的最后输入英文的分号加上php.exe的路径
5、开始->运行 输入cmd,在命令行窗口中输入php –h; 若显示结果如下图,则配置成功。
对编程感兴趣的同学,可以先学习下高手对做过项目的总结或者平时写的一些知识点总结,请大家关注老码农搞的微信公众号:程序员互动联盟或者coder_online,可以直接在里面看技术文章,找技术讨论群,也可以问技术问题,找编程导师。
PHP 文件读写操作
文件的打开与关闭(读文件中的内容, 向文件中写内容)
文件的读写可以针对图片文件;
1.读取文件中的内容
file_get_contents(); php5以上 返回值为字符传
file() 数组中的每个单元都是文件中相应的一行, 包括换行符在内 返回值为数组
readfile(); 直接输出到缓冲区,不需要用echo(直接将文件读出并输出到浏览器) 返回值为从文件中读入的字节数
不足:全部读取, 不能读取部分, 也不能指定的区域
mode 说明
\’r\’ 开头读(read)
\’r+\’ 开头读写
\’w\’ 清零写(write)
\’w+\’ 清零读写
\’a\’ 追加写(append)
\’a+\’ 追加读写
\’x\’ 谨慎写
\’x+\’ 谨慎读写
fread() string fread ( int $handle , int $length ) 读取文件, 参数$length单位为字节(最大值:8192)
fgetc() string fgetc ( resource $handle ) 返回一个包含有一个字符的字符串
fgets() string fgets ( resource $handle ) 返回一个包含有一行字符的字符串
fgetss() string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )
从文件指针中读取一行并过滤掉HTML标记
文件锁
2.写入文件
file_put_contents(\”URL\”, \”内容字符串\”); //php5以上,函数返回值为int
如果文件不存在, 则创建, 并写入内容
如果文件存在, 则删除文件中的内容, 重新写
默认为重新写, 可以通过第三个参数使用常量:FILE_APPEND来完成追加写;
格式: file_put_contents(\”URL\”, \”内容字符串\”, FILE_APPEND);
不足: 不能加锁
fopen()
fwrite() 别名 fputs
不同的操作系统具有不同的的结束符号,基于UNIX的系统使用\”\\n\”作为行结束字符,基于windows的系统使用\”\\r\\n\”作为行结束字符
基于Macintosh的系统使用\”\\r\”作为行结束字符。当要写入一个文本文件并想插入一个新行时,需要使用相应的操作系统的行结束符号。
注意:windows操行系统下,\”\\r\\n\”只是在代码中换行,如果要在浏览器显示结果中换行应采用\”<br/>\”
feof() 测试文件指针是否到了文件结束的位置
bool feof ( resource $handle )
stream_get_contents 和file_get_content的区别?
stream_get_contents — 读取资源流到一个字符串, 即其读取的内容是一个已经打开的资源句柄,
如fopen函数打开的文件句柄, 而 file_get_content可以直接读取文件内容读取到一个字符串, 保存在内存中。
本地文件:
./test.txt
c:/appserv/www/index.html
/usr/local/apahce/index.html
远程:
http://www.baidu.com
http://www.163.com
ftp://user@passwd:www.baidu.com/index.php
3.文件内部移动指针
ftell($file) 返回文件指针读/写的位置
fseek($file, 10); 在文件指针中定位
whence 的值定义为:
SEEK_SET – 设定位置等于 offset 字节。 默认值
SEEK_CUR – 设定位置为当前位置加上 offset 。 (要移动到当前文件之前的位置, 需要给 offset 传递一个负值。)
SEEK_END – 设定位置为文件尾加上 offset 。(要移动到文件尾之前的位置, 需要给 offset 传递一个负值。)
rewind(); 将 handle 的文件位置指针设为文件流的开头。
4.文件的锁定一些机制处理
要取得共享锁定(读取的程序), 将 operation 设为 LOCK_SH。 share 共享
要取得独占锁定(写入的程序), 将 operation 设为 LOCK_EX。 exclusive 独享
要释放锁定(无论共享或独占), 将 operation 设为 LOCK_UN。 unshackle 释放锁定
如果不希望 flock() 在锁定时堵塞, 则给 operation 加上 LOCK_NB(Windows 上还不支持)。
flock($fp, LOCK_EX | LOCK_NB)
fflush()将缓冲内容输出到文件
本函数强制将所有缓冲的输出写入 handle 文件句柄所指向的资源。 成功时返回 TRUE , 或者在失败时返回 FALSE 。
文件指针必须是有效的, 必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。
文件的读写可以针对图片文件;
5 文件截取
接受文件指针 handle 作为参数, 并将文件大小截取为 size, 从开始截取到指定的字符数(大小)。
PHP 的运行方式有哪些?
PHP本质上的运行方式可以分为两种:
- 基于命令行的
- 基于PHP-FPM的
但实际上,PHP能做的事很多,很多场景下,不同的运行方式能让开发更方便,减轻各种工作。
PHP内置了一个HTTP 的server。这意味着,很多时候,我们不需要nginx、apache、php-fpm、配置站点等等繁琐的操作,直接就可以运行php的代码。
比如这样简单的一行命令:
此时当前目录下的各类html、静态文件、php代码就都能正常返回运行了。
可以定义一个路由文件router.php,设置一些规则:
上面的路由文件定义了,当请求图片时返回图片,否则返回一段html代码。
ThinkPHP自5.1的版本起,内置封装了PHP的内置服务器。只要再TP项目下运行命令:
这样这个框架就运行起来了,不需要配置Nginx、Apache、静态规则、站点的目录、域名host等等等,一行命令就可以开始开发了。现在我在本地开发的时候,只把对应版本的PHP配置到环境变量里,其他的各类nginx等软件一律不用,开发非常方便。
不过这种方式只能用于测试开发或者临时演示来用。PHP的内置服务器不能处理并发请求,所有的请求(包括css、js等文件)都只能一个一个的处理。但是做开发是完全足够的。
PHP的FPM是黑科技,这是真的,稳如老狗,怎么折腾都不会出问题,每个请求之间隔离得清清楚,互不影响,这一点当你在用Java、Node、Go等Http框架下开发时就会体会到了。
一般而言,PHP-fpm和nginx配合。这也是最常见的运行方式,资料很多,也有很多成熟的面板帮助开发者配置,这里不多介绍。但这里希望强调一点,一定要开启opcache、一定要开启opcache、一定要开启opcache。
开启opcache之后,直接无脑的获得巨大的性能提醒。如今的PHP项目,PHP代码很多,因为使用composer依赖等,随随便便几百个文件或者小一千个文件是常态,有些重量级框架动辄几十M甚至上百M的代码,如果不开启是opcache,老狗也会难受。
PHP有各种内置的网络编程扩展和函数,但是用起来比较麻烦,不直观。但是现在有很多成熟且流行的网络编程框架,可以基于TCP和UDP协议进行各类业务的开发,比如例如即时通讯类、物联网、游戏、服务治理、其它服务器或者中间件、微服务等。
我也多次介绍过这些项目了,他们也都很热门,这里不再过多介绍:
基于官方扩展使用纯PHP开发的网络编程和进程管理库,内置进程守护。
Swoole
纯C开发的PHP扩展库,高性能、协程。
ReactPHP
像Node一样的事件驱动框架。国外热门主流,衍生了非常多的有趣的项目,比如有人用它实现了一套Redis server。
Swow
使用C和PHP实现的一套框架,专注于IO。
GatewayWorker
基于Workerman开发的长连接框架,开发体验极佳,自动抹平协议沟通,实现TCP、websocket等各种协议的对接,支持分布式部署。
其他还有很多,大家可以留言。
未来事实上的PHP异步、协程标准。
其实就是基于上面介绍的框架实现的专门用于HTTP开发的框架。刚才介绍的框架基本是能够实现TCP、UDP网络编程的,本小节主要介绍开发HTTP的部分,大部分也是基于上面这些框架实现的。
基于Workerman的高性能HTTP框架,简单易用,基本的MVC体验。
基于swoole扩展实现的高性能HTTP框架,比如easyswoole,Hyperf等等。
基于ReactPHP实现的PHP进程管理,可以无缝与标准的请求、响应框架集成驱动。
GO语言编写的PHP应用服务框架。
此类框架很多,不多介绍了。
确实很少有人这么做,很少有人开发在命令行下的项目,如果有这种需求,一般是使用ThinkPHP、laravel等框架提供的自定义命令去实现了。但不代表PHP没有这方面的成熟的框架。
一个PHP的极简的无依赖的命令行类库.可以非常方便的结构化的程序逻辑和漂亮的输出.
PsySH是一个实时运行的交互的命令行项目。
一个事实上的PHP标准的命令行框架。
可能有些PHP没接触过这个概念,大体的意思是,不用自己部署运维服务器了,只要把代码上传到severless的服务上即可,按计算扣积分。基本都是各大服务器厂家提供的服务。其中laravel对其有很好的支持,其他也有一些框架能够很容易的实现。比如Bref,简单且可扩展的服务框架。
所以总的来说,PHP有各种的方式,对应不同的业务场景。
其他还有一些很有意思的项目,比如:
- KPHP,把PHP编译成C++代码。
- peachpie,把PHP便以为.NET平台程序
- PHP-JS,集成Node引擎的PHP扩展
- PHP-CPP,使用C++开发PHP扩展,代码很容易上手
这些项目在我的另一篇文章有介绍:
《PHP的几个有趣的打开方式:从基本到变态》https://phpreturn.com/index/a623dc0357dead.html
最近又出了几个PHP代码“编译”功能的项目,主要的目并不是性能,而是源码保护,ulthon_admin的有个分支正在做这件事,还没有正式发布,另外一个国人开发的项目,也没正式上线,总体思路也是这个,等以后详细为大家介绍介绍。
原文标题:PHP 的运行方式有哪些?
原文地址:https://phpreturn.com/index/a640bdfa37386b.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。