Php 在数据库中跟踪脚本是否成功完成的最佳方法
我使用的是PHP/MySQL,尽管我认为这个问题本质上是语言/db矛盾的。我有一个PHP脚本,它连接到一个API,获取响应数据,对其进行解析,然后将其发送到另一个API以存储在其数据库中。有时,由于其中一个API出错,此过程会失败。因此,我想很容易地追踪它的成功/失败 我应该澄清,在本例中,“成功”定义为脚本从第一个API获取所需的数据,并由第二个API成功处理。因此,“失败”可能由以下三种情况造成:Php 在数据库中跟踪脚本是否成功完成的最佳方法,php,mysql,tracking,Php,Mysql,Tracking,我使用的是PHP/MySQL,尽管我认为这个问题本质上是语言/db矛盾的。我有一个PHP脚本,它连接到一个API,获取响应数据,对其进行解析,然后将其发送到另一个API以存储在其数据库中。有时,由于其中一个API出错,此过程会失败。因此,我想很容易地追踪它的成功/失败 我应该澄清,在本例中,“成功”定义为脚本从第一个API获取所需的数据,并由第二个API成功处理。因此,“失败”可能由以下三种情况造成: 第一个API抛出一个错误 第二个API抛出一个错误 我的脚本超时了 此脚本将每天运行一次。我想
这是最好的方法,还是其他方法更有效?我看不出这有什么理由不起作用,但我觉得必须存在一些公认的标准方法来实现这一点。用户声明的关闭函数可能是一种替代方法:使用您可以在脚本终止时执行回调,而当用户成功中止时,或超时您可以使用锁定文件:
- 在脚本的一开始,您就在文件系统的某个地方创建了一个锁文件
- 在脚本的最后,如果一切正常,则将其从文件系统中删除
您可以通过一个监控脚本组合此系统,该脚本在存在锁文件且创建日期早于给定时间间隔(例如,如果脚本通常在几分钟内运行,则为1小时)时发送警报。您似乎有一个可行的方法,请尝试一下。只添加了上一段。我并不担心我的方法行不通。然而,我所描述的需求似乎是非常普遍的,因此我想知道是否有一些公认的标准方法。只记录一个简单的“工作开始时间”记录,然后记录工作结束的时间,怎么样?没有结束时间的作业失败。然后您还将记录完成操作所需的时间。@MarcB-在这种情况下,我需要生成一个唯一的作业ID,因为我不能再使用时间戳作为单个作业的唯一标识符。但那很好,我喜欢记录工作耗时的额外优势。谢谢。有时我的脚本会因为超时而失败而不终止(例如,我提到的一个API会抛出错误)。在这种情况下,我假设您提供的这个函数实际上不会被调用。因此,除了测试脚本是否超时之外,我还需要一种方法来记录脚本是否成功。然而,有时它确实会因为超时而失败,这个函数会让我在数据库中注意到这一点。谢谢!实际上,我还没有尝试使用register\u shutdown\u函数来查看它是否在发生错误时执行(超时除外)但是测试很容易——没关系——我想我更喜欢捕捉其中一个API抛出的错误,而不是让脚本中实际发生错误。与我描述的方法相比,这有什么好处吗?我会说是的,因为发生db连接问题的机会比创建空文件错误更重要。