调试长时间运行的 PHP 脚本

2024-04-02

我有 php 脚本作为 cron 作业运行,广泛使用第三方代码。脚本本身有几千个LOC。基本上它是数据导入/处理脚本。 (JSON 到 MySQL,但它也进行大量 HTTP 调用和一些 SOAP)。

现在,性能随着时间的推移而下降。当测试少量记录(大约 100 条)时,性能还可以,10-20 分钟即可完成。当运行整个导入(大约1600条记录)时,一条记录的平均导入时间稳步增长,整个过程需要超过24小时,所以至少比预期长5倍。

内存似乎不是问题,使用量按预期增长,没有出现意外的峰值。

所以,我需要对其进行调试以找到瓶颈。这可能是脚本、底层代码库、php 本身、数据库、操作系统或网络部分的问题。我现在怀疑某种缓存在某个地方表现不佳,未命中率接近 100%。

我无法使用 XDebug,配置文件增长得太快而无法处理。

所以问题是:我该如何调试这种脚本?

PHP 版本:5.4.41 操作系统:Debian 7.8 如有必要,我可以拥有 root 权限,并安装工具。但它是生产服务器,理想情况下调试不应造成太大干扰。


是的,有可能 and 您可以使用 Kint(PHP 调试脚本)

它是什么? Kint for PHP 是一款旨在以绝对最佳方式呈现调试数据的工具。

换句话说,它是 var_dump() 和 debug_backtrace() 的增强版。易于使用,但功能强大且可定制。您的开发工具箱的重要补充。

还是迷路了?您可以使用它来查看变量内部的内容。

Act as a debug_backtrace replacer, too enter image description here

you can 在这里下载 http://raveren.github.io/kint/ or Here https://github.com/raveren/kint

全部文档和帮助都在这里 https://github.com/raveren/kint

另外,它还支持几乎所有的php框架

  • 代码点火器
  • Drupal
  • 交响乐团
  • 交响乐2
  • WordPress
  • Yii
  • 框架
  • Zend框架

一切顺利.... :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调试长时间运行的 PHP 脚本 的相关文章

  • 实现 PHP 单例:静态类属性还是静态方法变量?

    所以 我总是像这样实现一个单例 class Singleton private static instance null public static function getInstance if self instance null se
  • 如何对“2-1”这样的字符串进行数学计算以产生“1”?

    我只是想知道 PHP 是否有一个函数可以接受像这样的字符串2 1并产生它的算术结果 或者我必须手动执行此操作explode 获取算术运算符左侧和右侧的值 我知道这个问题很老了 但我昨晚在寻找不太相关的东西时遇到了它 而且这里的每个答案都很糟
  • PHP 7 上可以指定多个返回类型吗?

    我有一些可以返回的方法两种返回类型之一 我正在使用利用 MCV 的框架 因此重构这几个函数尤其没有吸引力 是否可以声明返回类型返回其中之一而在其他情况下失败 function test if this gt condition false
  • MySQL 错误“连接过多”

    我正在将 MySQL 5 0 用于由 GoDaddy linux 托管的网站 我正在对我的网络应用程序进行一些测试 突然我注意到页面刷新速度非常慢 最后 经过漫长的等待 我到达了一个页面 上面写着 MySQL 错误 连接太多 它指向我连接到
  • 在php中搜索字符串,搜索字段包含空格

    这是我的代码 div style display inline block div 我对空白有疑问 如果我仅使用 适合模型 或使用 11 2000 但不是两者组合 它会找到字符串 我需要将它们结合起来 否则就没用了 编辑 我不能做这样的事情
  • 在 tumblr 主题中显示当前年份

    我想在我的 Tumblr 主题的页脚中放置一个版权声明 例如 Acme Co 2013 但我不想每年都进行更新 通常使用 php 可以使用date 这很好 但是虽然 Tumblr 是基于 php 构建的 但我认为最终用户不能在网站上使用它
  • 为什么我无法在调试器中编辑包含匿名方法的方法?

    所以 每次我在一个我没有得到的方法中编写 lambda 表达式或匿名方法时quite是的 我被迫重新编译并重新启动整个应用程序或单元测试框架才能修复它 这非常烦人 而且我最终浪费的时间比使用这些构造节省的时间还要多 这太糟糕了 所以我尽可能
  • Docker 容器可以访问 DNS,但无法解析主机

    我在运行 docker 容器时遇到一个有趣的问题 突然间 我无法从容器内解析 DNS 这是一个概要 一切都没有解决 apt get pip 一次性 ping 容器等正在运行docker run it dns 8 8 8 8 ubuntu p
  • Tk 初始化失败:无显示名称且无 $DISPLAY 环境变量

    我试图从 Ubuntu 终端调用 Centos 服务器上的工具 我收到以下错误 Tk 初始化失败 没有显示名称 也没有 DISPLAY 环境变量 请帮我解决这个问题 提前致谢 连接到你的 CentOS 机器ssh Y其中 每man ssh
  • PHP - 为什么使用 Guzzle 而不是 cURL?

    在我的应用程序中 我最初开始使用 cURL 从各种 API 检索数据 今天 我尝试使用 Guzzle 来完成同样的任务 到目前为止 cURL 和 Guzzle 似乎都工作得同样好 判断依据Github https github com gu
  • 如何从 Linux 命令行打开 Sublime Text 2 文件到选项卡,而不是新窗口

    我有 ST2 设置 这样我就可以执行 sublime file txt 它将在 ST2 窗口中打开 但是我怎样才能让它在当前打开的窗口的新选项卡中打开呢 尝试 Sublime 命令行帮助 subl 帮助 Sublime Text 2 内部版
  • 如何从 php 中的字符串中删除 unicode 字符 (LEFT_TO_RIGHT_MARK)

    我试图在将字符串编码为 JSON 之前从字符串中删除从左到右标记 u200e 和从右到左标记 u200f 以下两者似乎都不起作用 s mb ereg replace u200e s s preg replace u200e u s s pr
  • Yii2 - 如何自动加载自定义类?

    我创建了以下自定义类 我想在我的 Yii2 应用程序中使用它 common components helper CustomDateTime php namespace common components helper class Cust
  • 来自发布数据的 CodeIgniter 未通过

    我试图在 CodeIgniter 中上传文件 但是当我添加 enctype multipart form data 时 不会有任何发布数据通过 甚至其他领域也根本没有 但是 当我不添加它时 我可以获得其他帖子数据 但当然没有文件上传 这里出
  • 无法在 .js 文件内命中断点

    我升级到 win 8 现在我在管理员权限下运行 VS 2012 并在 MVC 4 中创建一个网站 我在线检查了不同的解决方案 但没有一个有效 我的解决方案中有一个 javascript 文件 但是当我在其中放置断点时 在运行时我看到 没有为
  • 如何使用 PHP 代码从服务器下载文件

    如何从任何服务器下载 PHP 代码文件 您可以使用 Curl 使用 php 从网络下载文件 function curl get file contents URL c curl init curl setopt c CURLOPT RETU
  • Laravel Eloquent ORM 返回 stdClass 而不是实际模型

    我正在做 mymodel MyModel where url domain gt first 这返回了一个 MyModel 对象 现在 不知何故 它返回了一个 stdClass 发生了什么 laravel 有更新吗 我改变了什么吗 Than
  • PHP:switch 与 if [重复]

    这个问题在这里已经有答案了 哪种形式更有效率 这个 switch var case 1 break case 2 break 或者这个 if var 1 elseif var 2 在性能方面 性能方面完全无关 As PHPBench htt
  • 安装失败:无法在 ubuntu 上的 WordPress nginx 中创建目录

    我在本教程的帮助下设置了 WordPress 如何在 ubuntu 18 04 上使用 LEMP 安装 WordPress https www digitalocean com community tutorials how to inst
  • PHP 中 C# 的空合并运算符 (??)

    PHP 中是否有三元运算符或类似的操作符 of C 在 C 中是干净且简短的 但在 PHP 中你必须执行以下操作 This is absolutely okay except that REQUEST test is kind of red

随机推荐

  • 无法在 VS Code 中更改 Jupyter 内核

    I want to work on my Jupyter Notebook side the VS Code for the first time When I load the file and run the first cell I
  • 在 DirectX 中创建和使用纹理

    我正在尝试使用代码创建纹理 将其转换为着色器资源视图 然后将其应用到平面 但是我得到的只是一个黑色方块 我尝试使用 msdn 上的示例代码无济于事 还尝试使用 unsigned char 和 float float 如下所示 因为这就是我需
  • 如何压缩不同长度的列表?

    我怎么能够zip两个列表 例如 Line1 Line2 Line3 Line4 Line5 不丢弃第一个列表中的其余元素 如果可以的话 我想用空列表压缩额外的元素 zipWithPadding a gt b gt a gt b gt a b
  • 如何使窗口移动命令忽略某个窗口?

    所以我通常在 Emacs 中打开 3 个缓冲区 我正在编写的实际代码的一个缓冲区 用于所述代码的单元测试的一个缓冲区 A third buffer that displays the results of the unit test Thi
  • 是否有一种已知的用于电力塔模数管理所有情况的算法?

    我想在 PARI GP 中实施 用于计算 a 1 a 2 a n mod m 它管理所有情况 特别是 phi 链中出现高权力的情况 有谁知道这样的实现吗 这里可以使用中国余数来确保模数是素数幂 这简化了在 gcd x m 不为 1 的痛苦情
  • 仅获取子文件夹的文件夹大小,而忽略任何其他内容?

    我创建了下面的脚本 它管理和维护 RootFolder 中分配的存储 其中存储每日备份 每个备份都存储在其自己的单独文件夹中 并且如果 RootFolder 内容超过预设限制 则最旧的备份文件夹将被删除 到目前为止 一切都很好 我遇到的问题
  • React-markdown 不渲染 Markdown

    我正在使用 React markdown 来呈现输入的值 问题是归约没有得到应有的处理 例如如果我使用这个表达式 hello world 文本应该在h1中显示为文本 但它正常显示 其他表达式也无法显示被执行 setDataForm comi
  • CSS 弹出菜单

    我想在某些菜单项悬停时创建弹出菜单 我的菜单如下所示 项目1 项目2 项目3 当 item2 悬停时 我想在 item2 下方显示弹出窗口 箭头指向上方 我确信使用 javascript 可以很容易地做到这一点 尽管我还没有这样做过 但这里
  • 更改输入 onchange 的值?

    我正在尝试创建一个简单的 JavaScript 函数 当有人在一个数字中插入一个数字时input字段时 另一个字段的值应更改为该值 这是我现在所拥有的 function updateInput ish fieldname value ish
  • Amazon S3s 密钥背后的数据结构(过滤数据结构)

    我想实现一个类似于 Amazon S3 的查找功能的数据结构 就上下文而言 Amazon S3 将所有文件存储在平面命名空间中 但允许您通过文件名中的公共前缀查找文件组 从而复制目录树的功能 但又不那么复杂 问题是 查找和过滤操作都是 O
  • 如果类具有 @XmlElement 属性,则它不能具有 @XmlValue 属性

    我收到以下错误 If a class has XmlElement property it cannot have XmlValue property updated class XmlType propOrder currencyCode
  • 如何在 sqlalchemy 查询中将日期时间更改为字符串? [复制]

    这个问题在这里已经有答案了 这是我的代码 查询Notification create time result session query Notification content cls is read Notification creat
  • Freebase 上 MQL 中的多个查询

    我正在尝试从 Freebase 获取结果列表 我有一系列 MID 有人可以解释一下我如何构建查询并将其传递给 PHP 中的 API 吗 我是 MQL 新手 我什至无法让示例正常工作 simplequery array id gt topic
  • 斯威夫特:“!”的区别和 '?'迅速

    我声明如下 IBOutlet var hw label UILabel 如果我像上面那样写就可以成功运行 但是当我声明如下时 IBOutlet var hw label UILabel and hw label text Hello Wor
  • 如何使用 CSS/Javascript 防止 iOS 上 HTML 上的自动旋转图像

    我正在创建一个照片网站 我上传了一张自己的照片 但实际上方向不正确 图像逆时针旋转 90 度 我从我的 iPhone 上传了这张图片 显然 iPhone 是故意以这种方式存储的 在我的网站上 HTML 页面呈现了一个 JSON 对象 其中包
  • sizeof 运算符的问题

    由于我想在函数中动态查找数组大小 因此我使用了 sizeof 运算符 但我得到了一些意想不到的结果 这是一个演示程序 向您展示我想要做什么 include
  • 如何用 C 语言编写 C 编译器? [复制]

    这个问题在这里已经有答案了 这个问题可能源于我对编译器的误解 但这里是 在 K R 第一版的序言 第 xi 页 中可以找到以下陈述 操作系统 C编译器 并且基本上所有 UNIX 应用程序 包括编写本书所使用的所有软件 都是用 C 编写的 我
  • 同时预增量和后增量或混合预增量[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的前后递增 递减运算符 https stackoverflow com questions 174153 pre and post increment decrement operators i
  • NSImageView 动画

    我是Mac开发新手 我们有类似的方法吗imagev NSArray 数组WithObjects 我需要像我们在 iOS 中所做的事情想要在 mac 中做的事情 imageVie animationImages NSArray arrayWi
  • 调试长时间运行的 PHP 脚本

    我有 php 脚本作为 cron 作业运行 广泛使用第三方代码 脚本本身有几千个LOC 基本上它是数据导入 处理脚本 JSON 到 MySQL 但它也进行大量 HTTP 调用和一些 SOAP 现在 性能随着时间的推移而下降 当测试少量记录