威尼斯www.9778.com-威尼斯正版官方网站

哪些编写三个单独的 PHP 扩张

日期:2020-03-21编辑作者:Web前端技术

校勘 m4 后缀的配置文件

m4 配置文件能够钦点一些附加的检查。对于多个独门扩大来讲,你只供给做一些宏调用就能够。

PHP_ARG_ENABLE(foobar,whether to enable foobar,
[  --enable-foobar            Enable foobar])

if test "$PHP_FOOBAR" != "no"; then
  PHP_NEW_EXTENSION(foobar, foo.c bar.c, $ext_shared)
fi

PHP_ARG_ENABLE 会自动安装好准确的变量以管教扩大可以被 PHP_NEW_EXTENSION 以分享形式运维。

PHP_NEW_EXTENSION 的率先个参数是扩张的名号,首个参数是财富文件。第八个参数 $ext_shared 是由 PHP_ARG_ENABLE/WITHPHP_NEW_EXTENSION 设定的。

请始终使用 PHP_ARG_ENABLEPHP_ARG_WITH 举办安装。固然你不筹算公布你的 PHP 模块,这个设置也得以保障令你的模块和 PHP 主模块的接口保持紧凑。

注:PHP_ARG_ENABLEPHP_ARG_WITH 应该是用以定义模块是动态扩充如故静态编写翻译进 PHP 中,就跟编写翻译 PHP 时使用的 --enable-xxx--with-xxx 一样。

二、与 UNIX 营造系统相互: config.m4

扩展的 config.m4 文件告诉 UNIX 营造系统如何扩充 configure 选项是永葆的,你要求哪些扩展库,以至怎么着源文件要编写翻译成它的一片段。

安装后, 如何在 PHP 中使用 Memcached?

给个小例子:

在服务器中运行 Memcached:

/usr/local/memcached/bin/memcached -m 64 -p 11211 -u nobody -d
参数 说明 默认值
-m 最大使用内存量(单位 MB) 64
-p 端口号 11211
-u 用户名(在使用 root 运行的时候) nobody
-d 做为后台程序(Daemon)启动 -

接下来写个大约的 PHP 文件:

<?php
$mem = new Memcached(); //实例化一个 Memcached 的对象
$mem->addServer('127.0.0.1', 11211) or die ('Could not connect'); //连接 Memcached 服务器
$mem->set('name', 'phper'); //设置 key - value 值
echo $mem->get('name'); //通过 key 取 value

PS. 其余详细的用法, 能够参照他事他说加以考查 PHP 官方文档的 Memcached 章节


给模块加多分享扶助

偶尔独立扩充需倘若分享的已供其余模块加载。接下来作者会解释如何给曾经创办好的 foo 模块增多分享扶植。

  1. 在 config.m4 文件中,使用 PHP_ARG_WITH/PHP_ARG_ENABLE 来设定扩张,那样就足以自行使用 --with-foo=shared[,..]--enable-foo=shared[,..] 那样的授命作为编写翻译参数了。
  2. 在 config.m4 文件中,使用 PHP_NEW_EXTENSION(foo,.., $ext_shared) 使扩张能够被创设。
  3. 增加以下代码到您的 C 语言能源文件中:
   #ifdef COMPILE_DL_FOO
   ZEND_GET_MODULE(foo)
   #endif

这一段讲的下边都事关过了,这里只是又重申了一下。

一、ext_skel 脚本

PHP 扩张由多少个文本组成,这一个文件对具有扩张来讲都以通用的。分歧扩充之间,那么些文件的浩大细节是相同的,只是要艰辛去复制每一个文件的从头到尾的经过。幸运的是,有脚本得以做有所的开首化职业,名叫ext_skel,自 PHP 4.0 起与其同台分发。

不带参数运维 ext_skel 在 PHP 5.6.24(最元旦规版本) 中会发生以下输出:

./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
           [--skel=dir] [--full-xml] [--no-help]

 --extname=module   module is the name of your extension
  --proto=file       file contains prototypes of functions to create
  --stubs=file       generate only function stubs in file
  --xml              generate xml documentation to be added to phpdoc-svn
  --skel=dir         path to the skeleton directory
  --full-xml         generate xml documentation for a self-contained extension
                     (not yet implemented)
  --no-help          don't try to be nice and create comments in the code
                     and helper functions to test if the module compiled

平时来讲,开荒二个新扩充时,仅需关切的参数是 --extname 和 --no-help。除非已经熟练增加的布局,不要想去使用 --no-help; 钦命此参数会以致 ext_skel 在变化无穷文书里大约超多实惠的申明。剩下的 --extname 会将扩大的名称传给 ext_skel。"name" 是三个全为小写字母的标记符,仅富含字母和下划线,在 PHP 发行李包裹的 ext/ 文件夹下是独一的。*** 官方网站说了:此外参数不用通晓,也毫无品味。 ***

干什么 PHP 的 memcached 插件需求 phpize 命令来生成 configure 文件?

因为 PHP 插件和 PHP 是深度耦合的.
而各类人的 PHP 情形是不平等的(PHP 版本差异卡塔尔国, 所以供给基于条件来定制 configure.

比方分别在本身的服务器和台式机上奉行 phpize 命令, 会得到这么结果:

图片 1

image.png

图片 2

image.png

二者是莫衷一是的


PECL 网站约定

假诺您计划宣布你的恢宏到 PECL 的网站,必要思索以下几点:

  1. 添加 LICENSE 或 COPYING 到 package.xml
  2. 内需在扩张头文件中定义好版本音信,这几个宏会被 foo_module_entry 调用来声称扩大版本:
   #define PHP_FOO_VERSION "1.2.3"

三、phpize、配置、编译

因为自个儿的Mac上曾经自带了PHP的情状,就不应用百分百PHP源码编译的主意了。使用命令行工具phpize对增加进行编写翻译。

phpize 命令是用来计划 PHP 扩大库的编写翻译碰着的工具。固然系统中平昔不 phpize 命令並且接受了预编写翻译的包(举个例子 RPM),那要安装 PHP 包相应的支付版本,此版本平时包括了 phpize 命令以致对应的用于编写翻译 PHP 及其扩充库的头文件。使用 phpize --help 命令能够来得此命令用法。

使用root权限实践phpize:

 zhangxuefeng@zhangxuefengdeMac-mini  ~/Developer/php-5.6.24/ext/edutest1  sudo /usr/bin/phpize
Password:
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212

configure,要求接受php-config工具:

php-config 是叁个简短的下令行脚本用于获取所设置的 PHP 配置的新闻。在编写翻译扩张时,假使设置有四个 PHP 版本,能够在安立时用 --with-php-config 选项来钦命使用哪几个本子编写翻译,该选取钦命了相对应的 php-config 脚本的门路。

 ✘ zhangxuefeng@zhangxuefengdeMac-mini  ~/Developer/php-5.6.24/ext/edutest1  sudo ./configure --enable-edutest1 --with-php-config=/usr/bin/php-config
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for cc... cc
……

Make 编译:

 zhangxuefeng@zhangxuefengdeMac-mini  ~/Developer/php-5.6.24/ext/edutest1  sudo make
Password:
/bin/sh /Users/zhangxuefeng/Developer/php-5.6.24/ext/edutest1/libtool --mode=compile cc  -I. -I/Users/zhangxuefeng/Developer/php-5.6.24/ext/edutest1 -DPHP_ATOM_INC -I/Users/zhangxuefeng/Developer/php-5.6.24/ext/edutest1/include -I/Users/zhangxuefeng/Developer/php-5.6.24/ext/edutest1/main -I/Users/zhangxuefeng/Developer/php-5.6.24/ext/edutest1 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /Users/zhangxuefeng/Developer/php-5.6.24/ext/edutest1/edutest1.c -o edutest1.lo
mkdir .libs
……
……
……
Build complete.
Don't forget to run 'make test'.

Make Install:

 zhangxuefeng@zhangxuefengdeMac-mini  ~/Developer/php-5.6.24/ext/edutest1  sudo make install
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20121212/

加上完整路线到php.ini中:

 zhangxuefeng@zhangxuefengdeMac-mini sudo vim /etc/php.ini
……
899 extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/edutest1.so
……

用 yum 寻觅不到高版本的 php-devel 怎么做?

合法的 yum 客栈恐怕未有相比较新的库文件, 能够加上公众承认不错的 ius 旅社:

如果是 CentOS 7:

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y

如果是 CentOS 6:

sudo yum install https://rhel6.iuscommunity.org/ius-release.rpm -y

也得以参照那篇小说 -- Centos/RedHat 7/6/5切换Ali云源并设置EPEL/IUS/REMI仓库.


希图好系统工具

想要增添能够在系统上编写翻译并成功运营,须求预备转以下工具:

  • GNU autoconf
  • GNU automake
  • GNU libtool
  • GNU m4

以上这几个都能够从 获取。

注:以上那个都以类 Unix 情状下技术接受的工具。

宏PHP_NEW_EXTENSION

该宏证明了扩张的模块和一定要编写翻译作为扩一大半的源码文件。假设急需五个源文件,则动用空格分隔,第五个参数$ext_shared与调用PHP_SUBST(EDUTEST1_SHARED_LIBADD)有关。

还没 php-config 命令如何是好?

假如 PHP 是通过编写翻译安装的, php-config 命令会在 PHP 安装目录的 bin 目录下.
但是即便 PHP 是用 yum 安装的, 是没有 php-config的. 要求额外安装相应版本的 php-devel 包:

# 因为我是用 yum 安装的 php70u, 所以
yum search php70u-devel
sudo yum install php70u-devel.x86_64

之后 whereis php-config, 就能够意识已经出现在 /usr/bin/php-config.

PS. "devel" 表示库的源码.
晋升: 用 yum 安装库, 不光要安装库本人(可试行文件卡塔尔国, 往往还须求安装库的源码 xxx-devel

注意:
网络有些建议直接设置 php-devel:

yum install php-devel

不过自个儿推行这么些命令遭逢这样的报错(推断是因为那台服务器以前设置过 PHP 5.4卡塔尔(قطر‎:

Error: php70u-cli conflicts with php-cli-5.4.16-42.el7.x86_64
Error: php70u-common conflicts with php-common-5.4.16-42.el7.x86_64
Error: php70u-json conflicts with php-common-5.4.16-42.el7.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

由此提出依旧用 yum 寻觅安装对应 PHP 版本的 devel 为妥.


单独的 PHP 增添能够独立于 PHP 源码之外进行分发。要开创二个那样的扩张,供给预备好两样东西:

四、重启HTTP服务:

图片 3

phpinfo截图.png

小说历史

  • 2017/07/09 (第叁回发表卡塔尔;
  • 2017/07/09 写了个 PHP 使用 Memcached 的小例子;
  • 2017/07/10 校正拼写错误(将 ./configure误写成了 .configureState of Qatar. 改善编写翻译 PHP 的 Memcached 插件时的编译配置错误; 扩展章节 -- "为什么PHP 的 memcached 插件需求 phpize 命令来生成 configure 文件";

假诺作者的文章对你有用, 希望给些修改的建议, 只怕打个"钟爱" _

安装扩张

强盛能够通过以下命令编写翻译安装:

$ ./configure 
            [--with-php-config=/path/to/php-config]
$ make install

实行创造edutest1

 ✘ zhangxuefeng@zhangxuefengdeMac-mini  ~/Developer/php-5.6.24/ext  ./ext_skel --extname=edutest1
Creating directory edutest1
Creating basic files: config.m4 config.w32 .gitignore edutest1.c php_edutest1.h CREDITS EXPERIMENTAL tests/001.phpt edutest1.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/edutest1/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-edutest1
5.  $ make
6.  $ ./sapi/cli/php -f ext/edutest1/edutest1.php
7.  $ vi ext/edutest1/edutest1.c
8.  $ make

Repeat steps 3-6 until you are satisfied with ext/edutest1/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.

参照文章

  • PHP 官方文书档案 - Memcached
  • 手动为php安装memcached扩充模块
  • StackOverflow - not able to install php-devel in aws centos ec2 instance for php version 5.6.22
  • Linux 编译 常用PHP 扩展
  • Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
  • Centos/RedHat 7/6/5切换Ali云源并安装EPEL/IUS/REMI饭馆
  • Linux 编写翻译软件的步调

改装一个早就存在的扩张

为了展现出创立一个独立的恢宏是比较轻巧的专门的职业,大家先将叁个业已内嵌到 PHP 的强大改成单身扩张。安装 PHP 况且施行以下命令:

$ mkdir /tmp/newext
$ cd /tmp/newext

这段时间您曾经有了贰个空目录。我们将 mysql 扩大目录下的文本复制过来:

$ cp -rp php-4.0.X/ext/mysql/* .
# 注:看来这篇 README 真的需要更新一下了
# PHP7 中已经移除了 mysql 扩展部分

到那边扩大就到位了,实践:

$ phpize

当今你能够独自贮存在这里个目录下的文书到另各地方,那些扩充能够完全部独用立存在了。

顾客在编写翻译时索要选取以下命令:

$ ./configure 
       [--with-php-config=/path/to/php-config] 
       [--with-mysql=MYSQL-DIR]
$ make install

与此相类似 MySQL 模块就足以应用内嵌的 MySQL 客户端库大概已安装的坐落于 MySQL 目录中的 MySQL。

注:意思是说想要编写 PHP 扩大,你既须求已经设置了 PHP,也急需下载一份 PHP 源码。

因为特性化推荐系统的费用,是构造组与战略组的跨小共青团和少先队合营,所以计谋方不情愿公开自身的代码,所以就只可以采纳大家提供系统机能,对方提供计谋部分.so文件来贯彻(战术团队以C/C++作为重大语言)。

后面章节小编会先简要说喜宝(Hipp卡塔尔下装置进度, 后边章节小编会记录在装置时期踩过的坑.
Linux 下编写翻译软件的步骤参见Linux 编译软件的手续

  • 布署文件 (config.m4卡塔尔(قطر‎
  • 你的模块源码

成功!

安装 PHP 扩张的通用流程

  • 1.下载解压

cd /usr/local/src #相仿把第三方软件的源码放在这里个目录
wget http://xxx.com/ #软件源码下载地址
tar -zxvf 压缩包 #解压缩. 根据分裂等级次序的压缩包,使用分歧的解压缩命令, 比方 ".gz 压缩包"使用 -zx , ".bz 压缩包"使用 -jx
```

  • 2.编写翻译安装

cd /解压缩后/的文件夹
/usr/local/bin/phpize #用 phpize 命令生成 configure 配置文件
./configure --with-php-config=/usr/local/php/bin/php-config #配置
make #编译
sudo make install #安装
```

  • 3.修改 php.ini

    在 php.ini 中添加:

extension=名称.so # "名称"为扩大的名称. 也许能够用重定向的授命校订php.ini sudo echo extension=名称.so >> /etc/php.ini
```

  • 4.重启服务

php -m | grep 扩大名称 #证实是不是科学安装上了扩展
sudo systemctl reload php-fpm nginx #systemctl 是 CentOS 7 的命令
```


始建资源文件

ext_skel 可感到你的 PHP 模块创造一些通用的代码,你也足以编写一些基本函数定义和 C 代码来处理函数的参数。具体信息方可查看 READNE.EXT_SKEL。

而不是顾忌未有楷模,PHP 中有繁多模块供你参谋,选用叁个简易的点起来,加多你本身的代码。

注:ext_skel 能够生成好核心模块必要的财富文件和铺排文件,无需和谐创设。

基于需求更改config.m4

  1. 切换到ext/edutest1/目录。
  2. vi config.m4
  3. 将上面的第一、三行撤消注释,并删掉第二行:
16 dnl PHP_ARG_ENABLE(edutest1, whether to enable edutest1 support,
 17 dnl Make sure that the comment is aligned:
 18 dnl [  --enable-edutest1           Enable edutest1 support])

修改为:

16 PHP_ARG_ENABLE(edutest1, whether to enable edutest1 support,
 17     [  --enable-edutest1           Enable edutest1 support])
  1. PHP_SUBST一行的注释展开:
19 if test "$PHP_EDUTEST1" != "no"; then
……
59   PHP_SUBST(EDUTEST1_SHARED_LIBADD)
60
61   PHP_NEW_EXTENSION(edutest1, edutest1.c, $ext_shared)
62 fi

要来说之表明:

编写翻译安装 Memcached 扩大

  • 1.安装 memcached

    • 编写翻译安装 memcached 信赖的 libevent 库

cd /usr/local/src
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
tar -zxvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable
./configure --prefix=/usr/local/libevent
make && make test && sudo make install
```

- **编译安装 memcached**

```shell

cd /usr/local/src
wget http://memcached.org/files/memcached-1.4.39.tar.gz
tar -zxvf memcached-1.4.39.tar.gz
cd memcached-1.4.39.tar.gz
./configure --prefix=/usr/local/memcached
make && make test && sudo make install
```

  • 2.安装 PHP 的 Memcached 扩展

    • 编写翻译安装 Memcached 增加插件信任的 libmemcached 库

cd /usr/local/src
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18.tar.gz
./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached/bin/memcached
make && make test && sudo make install
```

- **编译安装 PHP PECL 的 Memcached 扩展**

```shell

cd /usr/local/src
wget https://pecl.php.net/get/memcached-3.0.3.tgz
tar -zxvf memcached-3.0.3.tgz
cd memcached-3.0.3
/usr/local/bin/phpize #用 phpize 命令生成 configure 配置文件
./configure --with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make && make test && sudo make install
```

证贝拉米(Bellamy卡塔尔国下 memcached 插件是不是精确安装:

ls /usr/lib64/php/modules | grep memcached
  • 3.修改 php.ini
vim /etc/php.ini #可以通过 whereis php 来查看 php.ini 文件的位置

在 php.ini 中添加:

extension=memcached.so
  • 4.重启服务
sudo systemctl reload php-fpm

概念八个新扩展

大家给示例扩大命名字为 “foobar”。

新扩充包蕴多个能源文件:foo.c 和 bar.c(还大概有部分头文件,但那些不唯有主要)。

示范扩大不引用任何外部的库(那点很要紧,因为如此顾客就无需特意指定一些编译选项了)。

LTLIBRARY_SOURCES 选项用于钦点财富文件的名字,你能够有私行数量的能源文件。

注:上边说的是 Makefile.in 文件中的配置选项,能够参照他事他说加以考查 xdebug。

宏PHP_ARG_ENABLE,含有四个参数:

首先个参数,extest1./configure树立了名叫enable-edutest1的筛选
第三个参数将会在./configure指令处理到该扩大的布署文件时,突显该参数的内容
其八个参数是./configure命令的声援,在使用./configure --help的时候显得

图片 4

接下去我们来描述一下万一成立那几个文件并构成起来。

autoconf 语法简单介绍

config.m4 文件使用 GNU autoconf 语法编写。不问可以知道,就是用苍劲的宏语言加强的 shell 脚本。注释用字符串 dnl 分隔,字符串则放在左右方括号中间(比如,[ 和 ])。字符串可按需求频仍嵌套援引。

服务器蒙受

  • CentOS 7
  • PHP 7.0.20
  • Nginx 1.10.1

匡正自定义模块

将 config.m4 文本和财富文件放到同二个索引中,然后实践 phpize (PHP 4.0 以上的本子编写翻译 PHP 的时候都设置了 phpize)。

若是你的 phpize 不在系统情况变量中,你须要钦命相对路线,举个例子:

$ /php/bin/phpize

以此命令会自行复制必须的营造文件到当前目录并依据 config.m4 创办构造文件。

透过以上的手续,你早原来就有了叁个单独的强大了。

如何寻觅 phpize 命令和 php-config 命令?

使用 whereis 命令, 比如:

whereis phpize #会显示类似路径, 像这样 phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz
whereis php-config #会显示类似路径, 像这样 php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz

可能应用 find 命令:

sudo find / -name phpize
sudo find / -name php-config

PS. php-config 是赢得所设置的 PHP 配置新闻的指令行脚本.
在编写翻译扩充时,借使设置有多个 PHP 版本,能够在布署时用 --with-php-config 选项来钦定使用哪贰个本子编写翻译,该选取钦点了相呼应的 php-config 脚本的路线.



在 PECL 中检索 "memcached" 有 3 个结果, 怎样抉择?

在 PECL 中搜索 "memcached" 有 3 个结果:

图片 5

image.png

  • mysqlnd_memcache 是将 SQL 语句转变成 MySQL InnoDB memcached Daemon, 能够息灭;
  • memcache 前段时间的 stable 版本 是在 2011-09-22, 表明已经终止维护, 消灭;
  • memcached 插件, 供给信赖 libmemcached 库, 安装相比费心, 不过更新更频仍, 何况最新的 stable 版本是 2017-02-20. 所以接纳那个插件.

合计须要编写翻译哪些软件?

总结要求编写翻译安装 4 个软件:

  • 先安装 Memcached 依赖的 libevent;
  • 然后安装 Memcached 库;
  • 再设置 PHP PECL 的 Memcached 插件信任的 libmemcached 库;
  • 最后安装 PHP PECL 的 Memcached 插件.

咳咳. 小编早已因为混淆了 Memcached 和 PHP 的 memcached 插件, 而浪费了许多时间. 囧


image.png

编译时报错

编写翻译时报错:

make -j2  all-am
make[1]: Entering directory `/usr/local/src/libmemcached-1.0.18'
  CXX      libhashkit/libhashkit_libhashkit_la-aes.lo
./libtool: line 1125: g++: command not found
make[1]: *** [libhashkit/libhashkit_libhashkit_la-aes.lo] Error 1
make[1]: Leaving directory `/usr/local/src/libmemcached-1.0.18'
make: *** [all] Error 2

依附高人引导, 安装编写翻译时能够一股脑装上这一个信任库:

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel 
libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel 
zlib zlib-devel glibc glibc-devel glib2 glib2-devel 
bzip2 bzip2-devel ncurses ncurses-devel 
curl curl-devel e2fsprogs e2fsprogs-devel 
krb5 krb5-devel libidn libidn-devel 
openssl openssl-devel openldap openldap-devel 
nss_ldap openldap-clients openldap-servers gd gd2 
gd-devel gd2-devel perl-CPAN pcre-devel

借使报错中包蕴 permission denied, 表示是顾客组的权柄难点, 表明您在 make install 前边忘了加 sudo, 也许您能够 su 步向管理员帐号再开展编写翻译操作.


编写翻译 Memcached 进程中踩过的坑

本文由威尼斯www.9778.com发布于Web前端技术,转载请注明出处:哪些编写三个单独的 PHP 扩张

关键词:

变量在 PHP7 内部的实现

PHP5 中的对象 在精晓 PHP7 中的对象达成直线大家先看一下 PHP5的还要看一下有怎么着功用上的标题。PHP5 中的 zval 会存...

详细>>

PHP7威尼斯www.9778.com 变量在内部的实现详解

正文第一有个别和第二均翻译自Nikita Popov(nikic,PHP官方开荒组成员,德国首都科技(science and technology卡塔尔国高校的学...

详细>>

PHP中的随机性 你觉得自己幸运吗?

PHP7 中的CSPRNG PHP 7引入了两个新函数可以用来实现CSPRNG: random_bytes 和 random_int。 random_bytes 函数返回一个字符串,...

详细>>

Badoo 告诉你切换到 PHP7 节省了 100 万美元

介绍 我们成功的把我们的应用迁移到了php7上面(数百台机器的集群),而且运行的很好,据说我们是第二个把如此规...

详细>>