2016-04-20 324 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