只需要四步,就能完成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

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。