问题标签 [php-7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1209 浏览

php - 如何在 Docker 映像上启动服务?

我已经为在 FPM + Nginx 上运行 PHP7 的图像创建了Dockerfile,但我无法让图像正确启动服务。

这应该怎么做?

这是我目前正在做的部分:

0 投票
1 回答
160 浏览

php - 使用 fetch_field_direct()、getColumnMeta() 的行计数解决方案;PHP 7 的可移植性?

我正在重写一个应用程序,以便它可以使用 MYSQLI 或 PDO 查询,这些查询可由 $connection_type 变量控制,该变量将“mysqli”或“pdo”作为正在使用的标志。

现有代码中有许多查询需要给定查询的行数。获取查询返回的实际行数已在 Stackoverflow 的其他地方以不同的方式受到质疑和回答,但我认为我已经找到了一种适用于 MYSQLI 或 PDO 的铁定方法,然后当结果对象来自对这些形式中的任何一种进行变体的查询(注意第三个示例;无论在查询中是否使用 COUNT(),我都设计了该函数):

对于 MYSQLI,我的解决方案依赖于 fetch_field_direct(),这显然是一成不变且可靠的。然而,对于 PDO,我的解决方案依赖于相应的函数 getColumnMeta(),它在 PHP.NET 文档中以这种方式标记:

警告 此功能是实验性的。在 PHP 的未来版本中,此函数的行为、其名称和相关文档可能会更改,恕不另行通知。使用此功能应由您自担风险。

所以,我有两个问题:

1)任何人都可以看到我在这种方法中忽略的东西吗?

2) 有谁知道 getColumnMeta() 是否 (a) 出现在即将到来的 PHP 7 中,然后 (b) 它是否已经完成以及它返回什么以及由哪些运营商提供?如果函数的名称是相同的并且如果它将返回如下的“名称”列,那么我的代码——在 PHP 5.6.12 上运行良好——因此应该在 PHP 7 上运行释放。

所以,这是我的函数的当前状态,对于上面列出的 MYSQLI 和 PDO 查询类型都可以正常工作(但我是否忽略了一些事情?):

0 投票
7 回答
24359 浏览

macos - 如何在 Mac 上为 PHP7 设置 XDebug?

我已经使用Homebrew在我的 Mac 上安装了 PHP 7,即

我也想在我的机器上安装XDebug 。

理想情况下,我希望有一个简单的解决方案,比如再次使用 brew ,但不幸的是,似乎不存在这样的公式(至少目前还没有),最新的包是homebrew/php/php56-xdebug.

我想在开始手动安装之前,检查这里看看是否有任何其他解决方法。

任何建议将不胜感激。

0 投票
2 回答
7454 浏览

mysql - PHP 7 性能

我试图重现这个基准,它将 PHP 7 与 Wordpress 服务器上的旧版本进行比较:http: //talks.php.net/oz15#/wpbench

我的配置几乎相同,服务器有 i7、SSD、16GB RAM 和 debian。服务器软件是nginx。令人惊讶的是,我的结果与上面链接的结果有很大不同。

在我的测试围攻(https://www.joedog.org/siege-home/)输出以下内容:

对于 PHP 7.0.0RC1:

对于 PHP 5.6.12:

查看交易率时,您可以看到 PHP 5 比 PHP 7 快两倍左右。我不敢相信。

另一个有趣的事实是,运行这个基准测试(http://www.php-benchmark-script.com/)导致 PHP 7 比 PHP 5 快大约 3 倍(当然在我也测试过的同一台服务器上) WordPress)。测量结果为:

  • PHP 7.0.0RC1 | PHP 5.5.28
  • 数学: 0.201 | 0.683
  • 字符串操作: 0.271 | 0.77
  • 循环: 0.166 | 0.486
  • 否则: 0.12 | 0.295

我已经上传了两个 phpinfo() 文件以防万一:

你知道为什么 PHP 7 在我使用 Wordpress 的测试中要慢得多吗?


启用 opcache 后,PHP 7 的速度实际上是 PHP 5 的两倍。感谢 Mjh 的提示!

我在随机填充的 WordPress 服务器上进行了以下测量。

Siege 现在为PHP 7.0.0RC1输出以下内容:

PHP 5.6.12

0 投票
2 回答
14803 浏览

php - 如何在 Mamp 中添加 php 7.0.0 RC2?

我拥有的当前 MAMP 版本是 php 5.6.10。

有没有办法添加可以在 MAMP 接口 php 首选项中选择的 php 7.0.0RC2 版本?

这是免费版的 MAMP,而不是 MAMP PRO。

我看到一个老问题(如何向 MAMP 添加其他 PHP 版本

但我无法让它工作,因为 php7.0.0RC2 没有模块文件夹,我无法在http://www.mamp.info/en/downloads/下载 7.0.0RC 版本

0 投票
5 回答
1552 浏览

php - PHP:发送选项列表作为参数(替代命名参数/参数包)

我希望提供一个选项列表作为函数的参数。

理想场景:命名参数

如果 PHP 有命名参数,它会这样做:

不幸的是 PHP 没有命名参数(请告诉我 PHP7 是否计划有一些作为注释)

其他人都在使用的解决方案:关联数组

我见过的大多数 PHP 脚本都使用另一种数组方法,如下所示:

关联数组方法的缺点

虽然这很好用,但也有以下缺点:

  • 用户不会从自动完成中受益(需要很长时间才能编写)
  • 用户很容易出现拼写错误
  • 不知道有哪些选项可用,因此可能会经常返回文档

有没有更好的办法?

有没有更好的方法可以解决这些问题(在当前的 PHP 或 PHP7 中,甚至可能是 hacklang(?))。

0 投票
1 回答
76 浏览

php - php 7.0 字符串可以大于 2^31,多大?

我真的做了一些工作来理解这一点

资源

升级说明说

在 64 位构建中支持长度 >= 2^31 字节的字符串。

但我读了这个链接

以及types.h使用定义的字符串长度的源代码size_t

我猜它似乎应该2^32在 32 位版本和2^6464 位版本上?

0 投票
3 回答
169 浏览

php - 在检查布尔值的情况下,php 7 中的 <=> 如何响应?

在途中查看 php 7,但 <=> 让我感到困惑。

大多数情况下,我使用条件运算符,它们用于布尔情况(<=> 几乎是,但不完全是,也能够返回 -1)。(如果 X <=> Y)。所以我不确定在以下情况下会发生什么......

如果前面有...我能期待什么

或者

或者

或者

肯定有足够多的案例让我对它会做什么感到困惑。

0 投票
1 回答
270 浏览

php - 什么值触发 Null Coalesce Operator?传入php 7?

我对 PHP 7 中出现的空 Coalesce 运算符(?? 运算符)的可能性感到兴奋。但是,我并不了解所有情况。

对于以下情况,我的结果是什么?

0 投票
1 回答
21108 浏览

php - 如何在不重写或审查所有代码的情况下在版本 5 - 7 之间迁移 PHP 代码

当 PHP7 完全发布时,我正在查看我正在使用的从 PHP5 到 PHP7 的更新代码库(主要是由于速度提高和 ?? 运算符确实可以帮助我们的站点)。

由于存在不推荐使用的函数,并且版本之间发生了一些更改,因此我正在考虑在包含它们之前在 php 文件上使用 filemtime,以查看是否应该包含可以修改 php7 行为的函数,使其在以下方面更像 php5那些文件。虽然这将在现有服务器上工作,但我知道各种复制方法(一些难以控制的管道)可能会在复制文件时更改修改日期。

有没有一种方法可以确定文件写入或兼容的 php 版本并适当地解释它们,或者这种 hacky 和冒险的解决方案真的是我最好的选择吗?