一文详解Windows和Linux环境下怎么安装配置PHP

怎么安装配置PHP?下面本篇文章就来给大家介绍一下Windows和Linux环境下安装配置PHP的方法,希望对大家有所帮助!

怎么安装配置PHP?下面本篇文章就来给大家介绍一下Windows和Linux环境下安装配置PHP的方法,希望对大家有所帮助!

PHP简介

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”

Windows下安装配置PHP

1、下载

官网下载地址https://windows.php.net/download

选择最新版下载

更多版本如不同VC和Thread Safe左侧导航有介绍。

一文详解Windows和Linux环境下怎么安装配置PHP

Linux系统运维及项目正式上线:进入学习

2、解压缩

文件名可以改简洁点

一文详解Windows和Linux环境下怎么安装配置PHP

3、配置

Apache安装配置可参考这里

https://blog.csdn.net/qq_45034708/article/details/108565486

一文详解Windows和Linux环境下怎么安装配置PHP

#加载PHP
LoadModule php7_module ;D:/tools/php7/php7apache2_4.dll;

#将PHP配置文件加载到Apache配置文件中,共同生效
PHPIniDir ;D:/tools/php7;

#配置Apache分配工作给PHP模块,把PHP代码交给PHP处理
#即.php后缀名的文件
AddType application/x-httpd-php .php

一文详解Windows和Linux环境下怎么安装配置PHP

4、php.ini文件

上述配置的php.ini文件默认是不存在的,是以development和production格式存在,需要格式化处理。

一文详解Windows和Linux环境下怎么安装配置PHP

一文详解Windows和Linux环境下怎么安装配置PHP

5、测试配置(此步可跳过)

重启Apache服务,打开cmd,切到 Apache解压目录/bin,输入指令

httpd -M

一文详解Windows和Linux环境下怎么安装配置PHP

6、测试PHP代码

一文详解Windows和Linux环境下怎么安装配置PHP

一文详解Windows和Linux环境下怎么安装配置PHP

<?php
//测试
echo ;hello world;;
?>

一文详解Windows和Linux环境下怎么安装配置PHP

至此就全部好了(~ ̄▽ ̄)~

Linux下安装配置PHP

1、下载和解压

cd /usr/local/src/ #切换目录
wget http://cn2.php.net/distributions/php-7.4.10.tar.bz2 #下载
wget http://xmlsoft.org/downloads.html/
tar jxvf php-7.4.10.tar.bz2 #解压

一文详解Windows和Linux环境下怎么安装配置PHP

2、安装

cd /usr/local/src/php-7.4.10
./configure –prefix=/usr/local/php7 –with-apxs2=/usr/local/apache2.4/bin/apxs –with-config-file-path=/usr/local/php7/etc –with-mysql=/usr/local/mysql –with-pdo-mysql=mysqlnd –with-mysqli –with-libxml-dir –with-gd –with-jpeg-dir –with-png-dir –with-freetype-dir –with-iconv-dir –with-zlib-dir –with-bz2 –with-openssl –with-mcrypt –enable-soap –enable-gd-native-ttf –enable-mbstring –enable-sockets –enable-exif –enable-fpm

执行configure时会报Error,说XXX not found等,对应安装即可,直到没错

  • Package ‘libxml-2.0’, required by ‘virtual:world’, not found

yum install -y libxml2-devel

  • Package ‘openssl’, required by ‘virtual:world’, not found

yum install -y openssl openssl-devel

  • Package ‘sqlite3’, required by ‘virtual:world’, not found

yum install sqlite-devel

  • configure: error: Please reinstall the BZip2 distribution

yum install -y bzip2 bzip2-devel

  • Package ‘krb5’, required by ‘virtual:world’, not found

yum install krb5-devel

  • Package ‘libcurl’, required by ‘virtual:world’, not found

yum install libcurl-devel

  • Package ‘libjpeg’, required by ‘virtual:world’, not found

yum install libjpeg-devel

  • Package ‘libzip’, required by ‘virtual:world’, not found

yum install libzip-devel

  • Package ‘libxslt’, required by ‘virtual:world’, not found

yum install libxslt-devel

  • Package ‘freetype2’, required by ‘virtual:world’, not found

yum install freetype-devel

  • Package ‘libpng’, required by ‘virtual:world’, not found

yum install libpng-devel

  • Package ‘oniguruma’, required by ‘virtual:world’, not found(这个有点麻烦 )

cd /usr/local/src/
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
tar -zxvf oniguruma-6.9.4.tar.gz
yum install autoconf automake libtool #有询问输入y
cd oniguruma-6.9.4/
./autogen.sh && ./configure –prefix=/usr
make && make install

一文详解Windows和Linux环境下怎么安装配置PHP

3、php.ini

拷贝格式化php.ini,同Windows

cp php.ini-development php.ini /usr/local/php7/ #拷贝
cp php.ini /usr/local/php7/
/usr/local/php7/bin/php -m #查看PHP加载模块
/usr/local/apache2.4/bin/apachectl -M #查看httpd加载模块

一文详解Windows和Linux环境下怎么安装配置PHP

4、配置Apache

vim /usr/local/apache2.4/conf/httpd.conf #编辑配置文件
#修改以下四点
#1.ServerName 195行
ServerName www.example.com:80
#2.Directory 204行
<Directory />
AllowOverride none
Require all granted
</Directory>
#3.DirectoryIndex 253行
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
#4.AddType 391行
AddType application/x-httpd-php .php

:wq #保存退出(先按ESC)
/usr/local/apache2.4/bin/apachectl -t #测试配置语法
/usr/local/apache2.4/bin/apachectl graceful #重新加载配置文件

一文详解Windows和Linux环境下怎么安装配置PHP

一文详解Windows和Linux环境下怎么安装配置PHP

一文详解Windows和Linux环境下怎么安装配置PHP

一文详解Windows和Linux环境下怎么安装配置PHP

5、启动服务

/usr/local/apache2.4/bin/apachectl start
ps -ef|grep httpd #查看httpd进程
netstat -lntp|grep 80 #查看80端口
curl localhost #测试

一文详解Windows和Linux环境下怎么安装配置PHP

6、测试

iptables -I INPUT -p tcp –dport 80 -j ACCEPT #开放80端口或配置服务器安全组
vim /usr/local/apache2.4/htdocs/test.php #编辑测试文件
<?php
phpinfo();
?>
:wq #保存退出(先按ESC)

一文详解Windows和Linux环境下怎么安装配置PHP

按此步骤下来就能成功了。

聊聊PHP7函数类型限定是否对性能有影响?(测试探讨)

转载2022-03-10 11:33:051282 + php学习QQ群:609135716PHP7函数类型限定是否对性能有影响?下面本篇文章就来聊聊PHP7函数数据类型限定设定与否对性能的影响,希望对大家有所帮助!

一文详解Windows和Linux环境下怎么安装配置PHP

php零基础到就业直播视频课:进入学习Apipost-比 postman 更好用的 API 文档、设计、调试、自动化测试一体化协作平台!点击使用

本文主要通过简单的压测来探讨PHP7函数数据类型限定设定与否对性能的影响,另外,分享下自己两个工作中遇到的小问题及其应对,如有错误,恳请指正。

PHP7函数类型限定

(1) 介绍

  • 函数参数类型限定(包括返回值、成员属性)从PHP5开始支持的,但是支持的类型不多,PHP7做了扩展:int/string/bool/object 等
  • 作用

    • 避免错误调用,标明类型,只能传递同类型的参数,尤其多人协同开发时。
    • 如果不是可以自动转换数据类型,如下,当然前提是待转化类型可以正常转化
    • 而本文正是测试类型限定对性能的影响程度

    function testInt(int $intNum){
    var_dump($intNum);
    }
    testInt("123"); // int(123)

  • 注意 参数、返回值如果跟设定的类型不一致时会报错,不是百分百确认的需要手动转化下

(2) 压测

  • 运行环境

    • PHP 7.2.34
    • Laravel 5.8
    • AB 2.3
  • 单机配置

    • 型号名称 MacBook Pro
    • 处理器名称 Quad-Core Intel Core i7
    • 内存 8 GB
    • 核总数 4
  • AB

    • 使用AB (Apache Benchmark) 进行压测,由于不是正式的压测,所以此处只关心综合指标:Requests per second (平均每秒请求数)
    • 主要参数

      • -n 压测请求数
      • -c 并发数
      • -p POST请求时指定所需携带参数的文件
      • -r 遇到错误响应不退出,操作系统有防高并发攻击保护措施 (apr_socket_recv: Connection reset by peer)
  • 设置项目 设置两个 POST 接口,没有业务逻辑、中间件操作等,如下

/***** 1 普通接口 *****/
// CommonUserController
public function createUser(Request $request)
{
$this->validate($request, [
'name' => 'required|string',
'age' => 'required|integer',
'sex' => ['required', Rule::in([1, 2])],
]);
(new CommonUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? '');
return response()->json(['status' => 200, 'msg' => 'ok']);
}
// CommonUserModel
public function createUser($sex, $age, $name, $address)
{
if(empty($sex) || empty($age) || empty($name)) return false;
// 省略DB操作
return true;
}

/***** 2 类型限定接口 *****/
// TypeUserController
public function createUser(Request $request): JsonResponse
{
$this->validate($request, [
'name' => 'required|string',
'age' => 'required|integer',
'sex' => ['required', Rule::in([1, 2])],
]);
(new TypeUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? '');
return response()->json(['status' => 200, 'msg' => 'ok']);
}
// TypeUserModel
public function createUser(int $age, string $name, int $sex, string $address): bool
{
if(empty($sex) || empty($age) || empty($name)){
return false;
}
// 省略DB操作
return true;
}

(3) 实施

  • 共进行五次压测,配置及结果展示如下 (统一删除:| grep 'Requests per second')

/*****第一次*****/
// 类型限定接口 rps=456.16
ab -n 100 -c 10 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=450.12
ab -n 100 -c 10 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/common/create_user

/*****第二次*****/
// 类型限定接口 rps=506.74
ab -n 1000 -c 100 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=491.24
ab -n 1000 -c 100 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/common/create_user

/*****第三次*****/
// 类型限定接口 rps=238.43
ab -n 5000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=237.16
ab -n 5000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user

/*****第四次*****/
// 类型限定接口 rps=209.21
ab -n 10000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=198.01
ab -n 10000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user

/*****第五次*****/
// 类型限定接口 rps=191.17
ab -n 100000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=190.55
ab -n 100000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user

(4) 结果

  • 压测不算太严谨,结果仅供参考
  • 类型限定对性能的提升没有预期的大,很微小,不过还是推荐这种写法

更多编程相关知识,请访问:编程视频!!

以上就是聊聊PHP7函数类型限定是否对性能有影响?(测试探讨)的详细内容,更多请关注钦钦技术栈其它相关文章!

转载至:php中文网【www.php.cn】

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/24853/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年9月22日 上午11:54
下一篇 2022年9月22日 上午11:57
软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!