PHPStorm解决Xdebug Slow问题

 更新时间:2016年11月25日 17:38  点击:1374
今天白天才架起PHPStorm+xdebug的调试环境,就遇到了各式各样的问题:访问超慢响应、访问超快响应但是是空白页。

 

问题A解决的方法很多,总归还有解决办法;问题B我估计是线程问题,也许可以通过调试php.ini的配置搞定,也许不是,很难讲清楚,线程的问题可能要跟xdebug的版本扯上关系。


解决方式
 

PHP.ini 找到memory_limit参数,增大!

 

换一个浏览器!我之前一直用Google Chrome调试程序,之后就开始变慢下来,直到每个页面变成6秒才加载完毕,已经忍无可忍。换成了Firefox、IE均没有这个问题。 (这个方法很好用,还能立刻见效!)

 

使用 xdebug.profiler_enable_trigger配置,有选择的运行xdebug功能探查程序。

 

xdebug.remote_host 的值最好跟你服务器的IP一致,比方说你是通过localhost访问,则这里写localhost,你是127.0.0.1访问,就写127.0.0.1

 

看看你的xdebug.profiler_output_dir目录是否已经达到几G了?(一套电商程序很可能在持续开发十几个小时后,xdebug.profiler_output_dir目录的xdebug文件达到好几G!)

 

平时不需要的时候,最好关闭xdebug!
xdebug.remote_enable = 0
xdebug.profiler_enable = 0
xdebug.remote_autostart = false
最后,一句话:DON’T RUN XDEBUG ON PRODUCTION.

我使用的都是php __autoload状态自动加载类的,今天好好的程序不知道怎么在运行时提示Fatal error: Cannot redeclare class 了,看是重复定义了类,下面我来分析一下解决办法。

错误提示

Fatal error: Cannot redeclare class ….

从字面来看也很好理解,说明是重复定义了类,找了一下自己的代码,是因为存在同名的类导致的,修改了类名就好了。

原因分析

1.在同一个文件中重复声明了两次同名的类:
例如:

 

 代码如下 复制代码
<?php  
class Foo {}  
 
// some code here  
 
class Foo {}  
?> 

在第二个 Foo 的地方就会报错。

解决:去掉第二个Foo,或者重命名。

为了防止重复定义,可以在定义一个新的类的时候判断一下这个类是否已经存在:

 

 代码如下 复制代码
if(class_exists('SomeClass') != true)  
{  
   //put class SomeClass here  

if(class_exists('SomeClass') != true)
{
   //put class SomeClass here
}


2.重复包含相同的类文件:

例如:对于某个类文件some_class.php,在a.php中

 代码如下 复制代码

include "some_class.php"; 
include "some_class.php";

在b.php中

 代码如下 复制代码


include "a.php";  
include "some_class.php"; 
include "a.php";
include "some_class.php";

就会报错。

解决:将上述的include全部替换为include_once

3.该类为PHP类库中内置的类。

判断方法:在一个空文件中写入

 

 代码如下 复制代码
<?php  
class Com  
{  
 
}  
?> 

这时候提示Cannot redeclare class Com,说明这个类就是PHP内置的类。不能使用。

另外,要避免使用太大众化的类名,比如Com,这个类在Linux使用可能是正常的,在Windows环境却无法运行。


再记一个网上找到的解决方法,可能在某些场合有用,先记着

 代码如下 复制代码


if (!class_exists('pageModule')){    
require_once(PATH_site.'fileadmin/scripts/class.page.php');
 }

上面的办法不适用于使用了php __autoload类加载的方法 ,但己经可以解决办法问题了,__autoload是自动加载的我们只要把相同类名找出来然后重命名即可。

本文章来给大家介绍Strict Standards: Only variables should be passed by reference in解决办法,各位朋友可参考。

php中使用内置的reset函数可以获取array的第一个元素的值。例如:

 代码如下 复制代码

$arr = array('one', 'two', 'three');

echo reset($arr);  

// 输出的结果为 one对于下述代码,如果php开启了"Strict Standards",将会看到"Strict Standards: Only variables should be passed by reference in"的提示。

 代码如下 复制代码

$str = 'netingcn.com';

echo reset(explode('.', $str));

为什么会这样呢?可以先看看reset函数的定义:

function reset (array &$array) {}从定义中可以看到,reset接受的参数是一个array的引用。而上述代码中explode返回值不是任何array的引用,所以在"Strict Standards"下会有上述提示。解决办法很简单,只需要把reset(explode('.', $str))分两步写即可。第一步先把explode的返回值赋给一个变量,第二步把这个变量作为reset参数。

出现上面的提示的不只是reset函数,只要参数接受的是对象引用,而传值直接使用function返回值都会看到那样的提示。例如内置的array_pop、shuffle、curent、next、prev、next等等

php 中使用memcached扩展来访问memcached时,当memcached服务器无法正常连接,在默认设置下会造成请求响应变慢。注意:无法正常连接指网络故障,如两台服务器无法进行通信等,只要能ping通,就算memcached服务没有开启或down掉,不会影响响应时间,只是memcached没有启作用。

设置timeout时间通过常量Memcached::OPT_CONNECT_TIMEOUT来控制,默认是4000毫秒(php 官网显示1000,我测试版本1.0.2和2.0.1都是4000)。另外1.0.2和2.0.1还有很大差别。1.0.2在执行addServer时就会连接memcached服务器,而且执行命令时候需要2倍的timeout时间,所有当memcached无法连接时候,花费时间是3倍的timeout时间。

2.0.1在php 5.2中似乎有bug,无法使用,具体参看:https://bugs.php.net/bug.php?id=61283。

本文章来给各位同学介绍Windows 平台的 PHP 报错 Fatal error: Class \'COM\' not found in 的解决方法,有需要了解的朋友可参考。


然在 Win Server 08 往上搭载的 IIS 跑 php 性能提升不少,但还是觉得不太舒服。。。

某日在调试一个win上的php生产环境时,一段php代码返回了错误:

Fatal error: Class 'COM' not found in XXXXXXXXX
1 Fatal error: Class 'COM' not found in XXXXXXXXX

没发现 COM 类,php代码主要是调用一些系统的信息,初想应该是php没配置好,在stackoverflow找到答案,是讨论xampp的,要延伸开来,我加了几个要点:

★ php 根目录的 ext 文件夹下确保存有 php_com_dotnet.dll 这个文件

★ php.ini 确保有此语句

[PHP_COM_DOTNET]
extension=php_com_dotnet.dll
1
2 [PHP_COM_DOTNET]extension=php_com_dotnet.dll

★ 开始 > 运行 > services.msc 回车 > 确保 COM+ Event System 的服务开启

在 PHP 5.4.5 版本之前是内置的,但往后版本中分离了。。。

[!--infotagslink--]

相关文章

  • PHP传值到不同页面的三种常见方式及php和html之间传值问题

    在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24
  • js修改input的type属性问题探讨

    js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
  • Mysql常见问题集锦

    1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a'...2013-10-04
  • Mysql大小写敏感的问题

    一、1 CREATE TABLE NAME(name VARCHAR(10)); 对这个表,缺省情况下,下面两个查询的结果是一样的:复制代码 代码如下: SELECT * FROM TABLE NAME WHERE name='clip'; SELECT * FROM TABLE NAME WH...2015-03-15
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • C#使用队列(Queue)解决简单的并发问题

    这篇文章主要介绍了使用队列(Queue)解决简单的并发问题,讲解的很细致,喜欢的朋友们可以了解一下...2020-06-25
  • windows 10 安装和使用中5个常见问题

    2015年7月29日0点起,Windows 10推送全面开启,Windows7、Windows8.1用户可以免费升级到Windows 10,用户也可以通过系统升级到Windows10,在这过程中,用户会遇到这样那样的问题,下面小编总结了windows 10 安装和使用中5个常见问题,需要的朋友可以参考下...2016-01-27
  • php中session常见问题分析

    PHP的session功能,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。 1. 错误提示 引用 代...2016-11-25
  • javascript学习指南之回调问题

    回调函数被认为是一种高级函数,一种被作为参数传递给另一个函数(在这称作"otherFunction")的高级函数,回调函数会在otherFunction内被调用(或执行)。回调函数的本质是一种模式(一种解决常见问题的模式),因此回调函数也被称为回调模式。...2016-04-25
  • json error: Use of overloaded operator [] is ambiguous错误的解决方法

    今天小编就为大家分享一篇关于json error: Use of overloaded operator [] is ambiguous错误的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-04-25
  • C++基于递归算法解决汉诺塔问题与树的遍历功能示例

    这篇文章主要介绍了C++基于递归算法解决汉诺塔问题与树的遍历功能,简单描述了递归算法的原理,并结合实例形式分析了基于递归算法解决汉诺塔问题与数的遍历相关操作技巧,需要的朋友可以参考下...2020-04-25
  • 使用phpstorm和xdebug实现远程调试的方法

    vs的断点调试功能很强大有木有,能查看所有变量有木有。php调试很麻烦有木有,echo,var_dump写得你想吐了有木有。想体验一下ide调试的快感吗?那就来使用xdebug吧...2016-01-02
  • PHP date函数显示1970-01-01问题详解

    我们使用date函数直接显示后面带有date("Y-m-d H:i:s",$t);发现显示的为1970-01-01了,这个问题对于新手来讲可能不好理解,但对于做过几年的高手来讲小菜了。 如date...2016-11-25
  • ThinkPhP+Apache+PHPstorm整合框架流程图解

    这篇文章主要介绍了ThinkPhP+Apache+PHPstorm整合框架流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-23
  • C#约瑟夫问题解决方法

    这篇文章主要介绍了C#约瑟夫问题解决方法,较为详细的分析了约瑟夫问题及C#解决技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 关于PhpStorm设置点击编辑文件自动定位源文件的实现方式

    这篇文章主要介绍了关于PhpStorm设置点击编辑文件自动定位源文件的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-12-30
  • 学习动态网页PHP技术常见问题汇总解答

    1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中reGISter_global默认为off 若想取得从另一页...2016-11-25
  • php5中Xdebug配置安装步骤介绍

    Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况了,下面我们来看php5中Xdebug配置安装,希望能帮助到各位。 Xdeb...2016-11-25
  • IIS 配置问题 一些iis常见问题的解决方法

    前几天在IIS的配置上出了些问题,到网上查找了些资料,顺便整理放在这里,希望对大家有帮助 ...2016-01-27
  • 解决:Bitmap too large to be uploaded into a texture exception问题

    下面我们一起来看一篇关于 解决:Bitmap too large to be uploaded into a texture exception问题解决办法。 最近做项目发现其他手机没有问题,但是出现了一个手机报...2016-09-20