XAMPP 在 Windows 上的 PHP 运行速度太慢了 100 倍

Posted

技术标签:

【中文标题】XAMPP 在 Windows 上的 PHP 运行速度太慢了 100 倍【英文标题】:PHP on Windows with XAMPP running 100 times too slow 【发布时间】:2016-08-13 18:01:42 【问题描述】:

php 在我的 Windows 桌面上运行如此缓慢,以至于 phpMyAdmin 需要几分钟才能打开一个数据库。下面是运行一个简单的PHP测试程序的时间对比:

运行 XAMPP 的 Windows 8.1 机器:3597 毫秒 iPage 共享主机:65 毫秒 A2Hosting 共享主机:26 毫秒

这是测试程序……

<?php
$rStartTime = microtime(true);
$countTo = 100000;
$a = 0;
//$countTo = $countTo * 100;
for ($x = 0; $x <= $countTo; $x++) 
    $a = sqrt(pow($x, 2));

$rMs = floor((microtime(true) - $rStartTime) * 1000);
echo 'timer done, countTo=' . $a . ' ms=' . $rMs;

在 Firefox 中输入“http://localhost/timer.php”,无需调试即可运行测试程序。

本地机器通常非常快。它正在运行……

Windows 8.1 XAMPP 1.8.3(控制面板 v3.2.1) Apache 2.4.4(最新为 2.4.20) PHP 5.5.3 反恶意软件 = Windows Defender IDE = PHPStorm 10.0.2

是什么让 PHP 运行如此缓慢?

【问题讨论】:

【参考方案1】:

如果您在 PHP 脚本中使用 mysql db,请检查您的 db 连接配置。

如果是 Windows (10) 上的 db 主机,请使用 127.0.0.1 而不是 localhost。

【讨论】:

谢谢,但是没有数据库修改可以解决 PHP 的底层缓慢问题。 MySQL 运行缓慢,就像所有其他 PHP 程序一样。在上面的速度测试中,我尝试在 php.ini 等各种其他地方将 localhost 更改为 127.0.0.1,但遗憾的是,它并没有太大帮助。 我最近遇到了非常相似的问题,我也尝试了一些技巧和“技巧”。 “最终”或当前结果(平均 php 脚本执行时间)并没有那么糟糕(~可用于开发目的),但仍然没有尽可能快。设置 mysqli 连接设置(localhost 为 127.0.0.1)导致大约十倍的加速。我还修改了 Apache httpd 的“ServerName”,修改了虚拟主机等,此外,我关闭了 IPv6(网络适配器设置),为 Win Defender 关闭/添加了例外,但所有这些修改几乎没有任何意义。 【参考方案2】:

对我来说,mcAfee Web boost 扩展程序就是拦截器。我删除了扩展程序,现在它的速度提高了 90%

【讨论】:

【参考方案3】:

对于 chrome 用户:我发现(在尝试了上述所有提示后)Chrome 扩展程序“Evernote Web Clipper”也在减慢 chrome。 加载没有任何包含的纯 URL 时: 启用/禁用 Evernote Web Clipper:0,7ms / 0,25ms

【讨论】:

【参考方案4】:

我的xampp也有同样的问题,问题是WINDOWS DEFENDER,如果你禁用windows defender保护,xampp会更快(正常速度),你也可以在windows defender中搜索xampp文件夹作为exlusion。这就是解决方案。

【讨论】:

已在 Windows 10 专业版上确认。 Magento 2 的 Composer 更新从 93 秒到 32 秒 谢谢,但 Carsten 早在 2017 年 4 月就提出了这个建议,见上文。该修复提供了 2 倍的改进,但 PHP 的运行速度仍然比没有 Xdebug 时慢 50 倍。 但是为 Windows Defender 禁用 xampp 的具体步骤是什么?这个答案没有告诉我。 但是为 Windows Defender 禁用 xampp 的具体步骤是什么?这个答案没有告诉我。【参考方案5】:

在将以上所有内容从https://localhost更改为https://127.0.0.1后,对我来说是一个进步

【讨论】:

考虑到您是否使用绝对路由,这不是一个好主意【参考方案6】:

解决了 php - WAMP/XAMPP 在 localhost / wordpress 上的响应非常慢

最简单的方法是去c盘>xamp>php文件夹>搜索php.ini>点击顶部然后找到max_execution_time设置为max_execution_time=300>现在重启xamp>全部完成:)

max_execution_time=300

【讨论】:

谢谢,虽然这可能解决了您的问题,但并没有解决我的问题。我已经将 max_execution_time 从默认值 30 秒增加到 10 小时(36000 秒),PHP 仍然运行得非常慢。 set max_execution_time=300 也许你的站点缓存问题我设置 max_execution_time=300 它工作正常【参考方案7】:

我发现 Eclipse 没有正确结束 XDebug 会话。我通过重新启动调试会话并正确结束它解决了这个问题。

【讨论】:

您是如何正确重启和结束 XDebug 会话的? 我想我在没有结束 XDebug 会话的情况下关闭了 Eclipse,这意味着我没有点击菜单中的红色框(终止)。当我第二天打开 phpMyAdmin 时它很慢 a.f.重新打开 Eclipse,启动调试会话并通过单击红色框图标正确结束它解决了问题。从那以后,我通常在与调试 (Firefox) 不同的浏览器 (chrome) 中打开 phpMyAdmin【参考方案8】:

我通过 xdebug idekey 设置 (xdebug.idekey="xdebug1") 和 chrome 扩展 xdebug 助手 (https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc) 解决了我的问题

*不要忘记禁用 remote_autostart (xdebug.remote_autostart=0)

仅通过请求激活调试(xdebug),使用 idekey 设置,因此如果不需要调试,php 处理可以更快/正常,通过带有 chrome 扩展名的按钮进行切换

我在 Windows 10 64 位上使用 xampp 1.8.3, 我使用自定义 idekey,xdebug.idekey="xdebug1",与 xdebug 助手设置相同

[XDebug]
zend_extension = "E:\xampp183\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "E:\xampp183\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart=0
xdebug.idekey="xdebug1"
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.trace_output_dir = "E:\xampp183\tmp"
xdebug.remote_log="E:\xampp183\tmp\xdebug\xdebug.log"

现在断点/调试仅在通过 xdebug 助手请求会话时才激活

【讨论】:

感谢 Dzikri 提供这个富有想象力且非常详细的解决方案!我对其进行了测试,它确实将速度提高了 2 倍!但即使使用您的提示,php 运行速度也很慢 :-( 正常时间 = 3597 毫秒。使用 Dzikri 提示,调试关闭时时间减少到 1482 毫秒,调试时减少到 1478 毫秒(奇怪的是更快!?)。但是通过注释掉 php 中的 Xdebug 部分。 ini,时间减少到27ms。 很高兴提供帮助,可能是不同的本地设置,不同的电脑规格,所以结果是多种多样的,在我的情况下,与让 xdebug autostart=on 相比,它可以加速 90% 这将我在 localhost 上的连接时间从大约 10-30 秒加快到 2-4 秒,这是一个巨大的进步,谢谢! 还有一个,如果你不需要分析,请务必关闭该设置,会导致极大的减速 xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 0【参考方案9】:

我在 Windows Defender 中排除了我的网站文件夹和我的 xampp 文件夹,问题在这里得到了解决。

【讨论】:

感谢 Carsten,这是我没想到的好主意!我对其进行了测试,它确实将速度提高了 2 倍!但是即使使用您的提示,它也很慢:-( 正常时间 = 3597 毫秒。使用 Carsten 提示 = 1509 毫秒。注释掉 Xdebug:27 毫秒。 您能简单解释一下这是如何实现的吗? 打开 Defender 并转到首选项/设置(“Einstellungen”我在这里使用德语版本)然后排除文件/文件夹并使用按钮获取文件对话框,您可以在其中指向您的文件/文件夹 我已经尝试了所有方法,但只有这个有效。谢谢你,兄弟!你是救生员。我排除了整个 xampp 文件夹,页面加载时间从 15-20 秒减少到 【参考方案10】:

我发现问题出在 xampp\php\php.ini 中的 Xdebug。以下是尝试在网络上找到的许多解决方案的结果:

以管理员身份运行 XAMPP 并重启服务器:3617 ms

在 xampp/apache/conf/httpd.conf 中,将 localhost 替换为 127.0.0.1 并重启服务器:3639 ms

在 Windows/System32/drivers/etc/hosts 中,添加“127.0.0.1 127.0.0.1”和“127.0.0.1 localhost”并重新启动 Windows:3960 ms

在 Windows/System32/drivers/etc/hosts 中,取消注释“127.0.0.1 localhost”并重新启动 Windows:3659 ms

在 php.ini 中,取消注释 zend_extension = "C:\xampp\php\ext\php_eaccelerator_ts.dll" 并重新启动服务器:3643 ms

在 php.ini 中,设置 xdebug.remote_enable=0:3598 毫秒

在 php.ini 中,设置 remote_host="localhost": 3593 ms

在 php.ini 中,设置 xdebug。profiler_enable=0:249 ms

在 php.ini 中,注释掉所有 Xdebug 语句:27 ms - 成功!

可悲的是,我犯了错误,需要 Xdebug :-(

【讨论】:

激活Xdebug能解决这个问题吗?我也有同样的问题。 希望我能。相反,我编写了一个 Delphi 程序,它在两个 php.ini 文件之间切换,一个带有调试功能(称为 debugPhp.ini),另一个没有(称为 fastPhp.ini)。 我这里似乎没有任何 Xdebug 选项。我猜 XAMPP 默认不附带 Xdebug,而我自己的瓶颈在其他地方? 我的 XAMPP 3.2.1 附带一个 php.ini 文件,该文件的底部有一个 [XDebug] 部分。 xampp 上没有这样的东西。

以上是关于XAMPP 在 Windows 上的 PHP 运行速度太慢了 100 倍的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上的 xampp 上使用 cakeresque

PHP 在 Windows 上的 Xampp 中正确获取“应用程序根目录”

Windows 上的 PHP 交互没有输出

codeigniter上的PHP短标签错误

如何在不安装在 Windows 10 上的情况下知道与特定 XAMPP 版本关联的 php 版本?

在 windows 平台上的 Xampp 上运行 Python 代码