【问题标题】:Error when using XHProf and XHGui使用 XHProf 和 XHGui 时出错
【发布时间】:2013-11-05 13:32:43
【问题描述】:

我已经按照此处的说明安装和配置了 XHGui:

http://www.sitepoint.com/the-need-for-speed-profiling-with-xhprof-and-xhgui/

但是,当我尝试分析页面时,我看到插入详细信息表时出现错误(由于存在大量二进制/压缩数据而将其截断):

Failed to insert: INSERT INTO `details` (`id`, `url`, `c_url`, `timestamp`, `server name`, `perfdata`, `type`, `cookie`, `post`, `get`, `pmu`, `wt`, `cpu`, `server_id`, `aggregateCalls_include`) VALUES('5278f06a19b9d', '/whats-on/?', '/whats-on/?', FROM_UNIXTIME('1383657576'), 'local.site2', 'x^���r$Iv%\n�K?����v����/?���������-��-�����~��j�\\/�g��>��X����O���~���o��mv���������������r9�p~�=��_��>�N_���jI�/�Wt�bqX�������Sy��S��K�u��:?g��K�6��p�����ӇOw�_>ষ�˄;.|�%��X���;n�>�����������-A\0ܞ/��\n\Z����������;C��om?\r;|a %5\0^�p��+z��A���rk��×�a��L\'OFю@X8�\"��7�\r��ah=���J�\'\n��Q���?�0�?��b\ZN�����rzz�����ߝ�O�Al=7�

我相信正在使用 zlib 压缩,并且我的 PHP 安装是使用 zlib 支持编译的:

'./configure' '--prefix=/usr/local/php5' '--with-apxs2=/usr/sbin/apxs' '--with-config-file-scan-dir=/usr/local/php5/php.d' '--with-openssl=/usr' '--with-zlib=/usr' '--with-zlib-dir=/usr' '--with-gd' '--with-ldap' '--with-xmlrpc' '--enable-exif' '--enable-soap' '--enable-sqlite-utf8' '--enable-wddx' '--enable-ftp' '--enable-sockets' '--with-bz2=/usr' '--enable-zip' '--enable-shmop' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-mbstring' '--enable-bcmath' '--enable-calendar' '--with-iodbc' '--with-mhash' '--enable-fpm' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pcntl' '--enable-dtrace' '--with-icu-dir=/usr/local/php5' '--with-mssql=shared,/usr/local/php5' '--with-pdo-dblib=shared,/usr/local/php5' '--with-libxml-dir=shared,/usr/local/php5' '--with-xsl=shared,/usr/local/php5' '--with-imap=../imap-2007f' '--with-kerberos=/usr' '--with-imap-ssl=/usr' '--with-gettext=/usr/local/php5' '--with-curl=shared,/usr/local/php5' '--with-png-dir=/usr/local/php5' '--with-jpeg-dir=/usr/local/php5' '--enable-gd-native-ttf' '--with-freetype-dir=/usr/local/php5' '--with-pgsql=shared,/usr/local/php5' '--with-pdo-pgsql=shared,/usr/local/php5' '--with-mcrypt=shared,/usr/local/php5' '--with-tidy=/usr/local/php5' '--with-gmp=shared,/usr/local/php5' '--with-readline=shared,/usr/local/php5'

任何人以前见过这个或知道发生了什么?它在本地主机上运行(Mountain Lion with Liip OSX PHP - PHP 5.4

更新

我增加了 server_id 字段长度并再次运行配置文件。现在得到:

由于此查询,第 1 行的列 'pmu' 的整数值不正确:

INSERT INTO `details` (`id`, `url`, `c_url`, `timestamp`, `server name`, `perfdata`, `type`, `cookie`, `post`, `get`, `pmu`, `wt`, `cpu`, `server_id`, `aggregateCalls_include`) VALUES('5279085839571', '/whats-on/?', '/whats-on/?', FROM_UNIXTIME('1383663629'), 'local.mysitename', 'x^��\0\0�\0�', '1', 'a:1:{s:8:\"_profile\";s:1:\"1\";}', 'a:0:{}', 'a:0:{}', '', '', '', 'localhost', '') 

显示创建表:

CREATE TABLE `details` (
  `id` char(17) NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `c_url` varchar(255) DEFAULT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `server name` varchar(64) DEFAULT NULL,
  `perfdata` mediumblob,
  `type` tinyint(4) DEFAULT NULL,
  `cookie` blob,
  `post` blob,
  `get` blob,
  `pmu` int(11) unsigned DEFAULT NULL,
  `wt` int(11) unsigned DEFAULT NULL,
  `cpu` int(11) unsigned DEFAULT NULL,
  `server_id` char(3) NOT NULL DEFAULT 't11',
  `aggregateCalls_include` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `url` (`url`),
  KEY `c_url` (`c_url`),
  KEY `cpu` (`cpu`),
  KEY `wt` (`wt`),
  KEY `pmu` (`pmu`),
  KEY `timestamp` (`timestamp`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

【问题讨论】:

    标签: php osx-mountain-lion zlib xhprof


    【解决方案1】:

    几个问题:

    • PDO 使用什么数据库后端? MySQL?其他?如果是 MySQL,试试 MySQL(i) 适配器? 数据存储在 MySQL
    • 如果您复制/粘贴查询(为简单起见省略 blob 数据),查询是否会执行,甚至会出现更详细的错误?它真的有效吗?
    • 您使用的后端是否很好地支持 blob? MySQL 会
    • 您能否将SHOW CREATE TABLE 显示为您的详细信息表?

    我认为压缩不是问题,它会更早失败,就像这里一样:https://github.com/preinheimer/xhprof/blob/master/xhprof_lib/utils/xhprof_runs.php#L434

    获取您更新的SHOW CREATE TABLE 和查询,我得到:

    Database changed
    mysql> CREATE TABLE `details` (
        ->   `id` char(17) NOT NULL,
        ->   `url` varchar(255) DEFAULT NULL,
        ->   `c_url` varchar(255) DEFAULT NULL,
        ->   `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        ->   `server name` varchar(64) DEFAULT NULL,
        ->   `perfdata` mediumblob,
        ->   `type` tinyint(4) DEFAULT NULL,
        ->   `cookie` blob,
        ->   `post` blob,
        ->   `get` blob,
        ->   `pmu` int(11) unsigned DEFAULT NULL,
        ->   `wt` int(11) unsigned DEFAULT NULL,
        ->   `cpu` int(11) unsigned DEFAULT NULL,
        ->   `server_id` char(3) NOT NULL DEFAULT 't11',
        ->   `aggregateCalls_include` varchar(255) DEFAULT NULL,
        ->   PRIMARY KEY (`id`),
        ->   KEY `url` (`url`),
        ->   KEY `c_url` (`c_url`),
        ->   KEY `cpu` (`cpu`),
        ->   KEY `wt` (`wt`),
        ->   KEY `pmu` (`pmu`),
        ->   KEY `timestamp` (`timestamp`)
        -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> INSERT INTO `details` (`id`, `url`, `c_url`, `timestamp`, `server name`, `perfdata`, `type`, `cookie`, `post`, `get`, `pmu`, `wt`, `cpu`, `server_id`, `aggregateCalls_include`) VALUES('5279085839571', '/whats-on/?', '/whats-on/?', FROM_UNIXTIME('1383663629'), 'local.mysitename', 'x^��\0\0�\0�', '1', 'a:1:{s:8:\"_profile\";s:1:\"1\";}', 'a:0:{}', 'a:0:{}', '', '', '', 'localhost', '') ;
    Query OK, 1 row affected, 4 warnings (0.00 sec)
    

    【讨论】:

    • 谢谢。它被设置为 PDO 但我切换到 mysqli - 同样的错误。不确定“我正在使用的后端”是什么意思?被测页面是基于 Wordpress 的网站的一部分。
    • 我在 mysql 客户端中运行时没有大型 blob 信息 - 它抱怨我增加的 server_id 字段的长度。我已经用剩余的错误更新了问题(数据至少现在正在写入表中)
    • 谢谢,我添加了一个关于 show create table 的新问题,另外,如果你直接将查询 c/p 到 MySQL 会发生什么?
    • 直接看上面重新运行查询
    • 您的查询对对我有用,它们在命令行中对您无效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2012-02-14
    • 2020-01-15
    相关资源
    最近更新 更多