2016-04-20 284 views
8

PHP在我的Windows桌面上运行非常缓慢,以至于phpMyAdmin需要花费几分钟才能打开数据库。这里的时间来运行一个简单的PHP测试程序的比较:在Windows上使用XAMPP运行100次太慢的PHP

  • 的Windows 8.1的机器上运行XAMPP:3597毫秒
  • 的iPage共同主办:65毫秒
  • A2Hosting共同主办:26 MS

这里的测试程序...

<?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跑的那么慢?

回答

13

我在xampp \ php \ php.ini中发现问题是Xdebug。我这里还有试图在网络上发现了许多解决方案的结果:

运行XAMPP 为adminisrator并重新启动服务器:3617毫秒

在XAMPP /阿帕奇/ conf目录/ 的httpd.conf ,用127.0.0.1,然后重新启动服务器localhost替换:3639毫秒

在Windows/System32下/驱动器的/ etc/个主机,加入“127.0.0.1 127.0.0.1” &“127.0.0.1 localhost”的,并重新启动Windows:3960毫秒

在Windows/System32下/驱动器的/ etc/主机,未评论“127.0.0.1 localhost”的,并重新启动Windows:3659毫秒

在php.ini中,取消的zend_extension =“C:\ XAMPP \ PHP \分机\ PHP_ eAccelerator在 _TS。DLL “并重新启动服务器:3643毫秒

在php.ini,设置了XDebug remote_enable = 0:3598毫秒

在php.ini,远程主机设定=” 本地主机“:3593毫秒

在php.ini,设置Xdebug的。 profiler_enable = 0:249毫秒

在php.ini中注释掉所有的Xdebug声明:27毫秒 - 成功!

不幸的是,我犯错误,需要Xdebug的:-(

+0

你可以用Xdebug激活来解决这个问题吗?我也有同样的麻烦。 – rck6982

+0

希望我能。相反,我编写了一个Delphi程序,用于在两个php.ini文件之间切换,一个用于调试(称为debugPhp.ini),另一个用于不带(称为fastPhp.ini)。 – CaptureWiz

+0

我在这里似乎没有任何类型的Xdebug选项。我猜XAMPP默认不带Xdebug,我自己的瓶颈是在别的地方? – DaVince

3

我排除我的网站文件夹,我的XAMPP文件夹中的Windows Defender和东西都在这里解决。

+0

谢谢卡斯滕,那是一个我没有想到的好主意!我测试了它,它的速度确实提高了2倍!但是即使是你的小费,它也很慢:-(正常时间= 3597ms。有Carsten小费= 1509ms。注释掉Xdebug:27ms。 – CaptureWiz

+0

你能简单地解释一下这是如何完成的吗? –

+0

Open Defender并转到Preferences/Settings(“ Einstellungen“我在这里使用德语版本),然后排除文件/文件夹,并在那里使用按钮来获得文件对话框,您可以指向您的文件/文件夹 –

3

我解决我的问题Xdebug的idekey设置(xdebug.idekey = “xdebug1”),和铬的XDebug扩展辅助(https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

*不要忘记停止remote_autostart(xdebug.remote_autostart = 0)

只有激活调试(Xdebug的)b y请求,使用idekey设置,所以如果调试不需要php处理可以更快/正常,通过铬扩展按钮tonggle

我在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" 

setting1

enter image description here

enter image description here

现在只有通过xdebug helper请求会话时才会触发断点/调试

+0

感谢Dzikri这个富有想象力和很好的详细解决方案!我测试它和它确实速度提高了2倍!但是即使使用提示,php运行速度也很慢:-(正常时间= 3597ms。使用Dzikri提示时,调试关闭时间缩短到1482ms,调试开启时间缩短到1478ms(奇怪地更快!)。在php.ini的Xdebug部分,时间减少到27ms – CaptureWiz

+0

乐于帮助,也许不同的本地设置,不同的PC规格,所以结果是不同的,在我的情况下,如果比较它可以加速到90%让xdebug autostart = on –

0

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

+0

您是如何重新启动并正确结束XDebug会话的? – CaptureWiz

+0

我想我没有结束XDebug会话就关闭了Eclipse,这意味着我没有单击菜单中的红色框(终止)。当我第二天打开phpMyAdmin时,它很慢a.f.重新打开Eclipse,启动调试会话,并通过单击红色框图标正确结束它解决了问题。 从那时起,我通常在不同的浏览器(铬)打开phpMyAdmin比我调试(Firefox) – Zudi

0

解决PHP - WAMP/XAMPP是响应了本地主机/ WordPress的

最简单的方法是去到C dirive> XAMP> PHP文件夹>搜索PHP很慢。INI>在上面碰杯然后找到的max_execution_time anset它的max_execution_time = 300>现在重新启动XAMP>全部完成:)

max_execution_time=300 
+0

谢谢,但虽然这可能已经解决了你的问题,但它并没有解决我的问题。我已经将max_execution_time从30秒的默认值增加到10小时(36000秒),并且PHP仍然非常缓慢地运行。 – CaptureWiz

+0

设置max_execution_time = 300也许你的网站缓存问题我设置max_execution_time = 300它工作正常 –

2
后得到改善

我有与xampp相同的问题,并且问题是WINDOWS DEFENDER,如果您禁用Windows防御者保护,xampp更快(正常速度),您也可以在Windows Defender中搜索xampp文件夹作为exlusion。这是解决方案。

+0

在Windows 10 Pro上确认。关于magento 2的作曲家更新从93年上升到32年 –

+0

谢谢,但Carsten早在2017年4月就已经提出过,请参阅上文。该修复提供了2倍的提升,但PHP仍然比没有Xdebug的运行速度慢50倍。 – CaptureWiz