Php 如果测试中断,如何禁用web应用程序中的功能?

Php 如果测试中断,如何禁用web应用程序中的功能?,php,testing,lamp,robustness,Php,Testing,Lamp,Robustness,我必须为这个类编写一个scraper,我想对它进行测试,以确保它实际工作 在这种情况下,我正在抓取的网站对他们的网站进行更改,我希望我们的网站失败并禁用该功能,直到我们更新抓取器 假设我使用单元测试来测试scraper,是否有一些工具会每X分钟运行一次测试,并在禁用Y功能之前检查它是否损坏 我想我要问的是,我可以利用哪些工具使我的应用程序更加健壮,这样我的用户就不会在我的刮板损坏时看到一些奇怪的消息 当网站有意外的HTML时,让scraper抛出一个自定义异常 编写单元测试,测试scraper在

我必须为这个类编写一个scraper,我想对它进行测试,以确保它实际工作

在这种情况下,我正在抓取的网站对他们的网站进行更改,我希望我们的网站失败并禁用该功能,直到我们更新抓取器

假设我使用单元测试来测试scraper,是否有一些工具会每X分钟运行一次测试,并在禁用Y功能之前检查它是否损坏

我想我要问的是,我可以利用哪些工具使我的应用程序更加健壮,这样我的用户就不会在我的刮板损坏时看到一些奇怪的消息

  • 当网站有意外的HTML时,让scraper抛出一个自定义异常
  • 编写单元测试,测试scraper在需要HTMl时是否能够解析网站,并测试类在无法解析网站时是否抛出自定义异常
  • 捕获生成网站内容的代码中的异常。向日志发送错误消息,并向用户显示适当的信息
  • 您还应该将解析的内容保存在本地。如果远程服务器关闭,您将退回保存的内容,而不是抛出ScraperParseThingyException

    您可以通过多种方式监视此情况。最简单的方法是偶尔关注一下错误日志

    $scraperConfiguration = array(
       'disable_on_error'      => true,
       'notify_on_first_error' => true,
       'notify_email'          => 'scrape-errors@example.com',
    );
    
    ...
    
    $scraper = new Scraper($scraperConfiguration);
    $scrapeResult = $scraper->scrape();
    
    ...
    
    正如这个小铲运机所显示的,您可以配置它的内部错误处理,在这里,在发生错误时自动禁用并发送NotiActions

    因为它将被自动禁用,您的站点将返回一个空结果,并且在您解决问题之前不再需要太多关注

    此外,您可以在测试配置的测试用例中使用它(例如,引发异常并对其进行测试,而不是发送电子邮件并在出错时禁用),这样您就可以在测试中看到它,尤其是在开发和维护组件时