Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel web应用程序中运行web scraping cronjob以将数据保存到DB的理想方式_Php_Mysql_Laravel_Screen Scraping - Fatal编程技术网

Php 在Laravel web应用程序中运行web scraping cronjob以将数据保存到DB的理想方式

Php 在Laravel web应用程序中运行web scraping cronjob以将数据保存到DB的理想方式,php,mysql,laravel,screen-scraping,Php,Mysql,Laravel,Screen Scraping,目前正在开发一个新的web服务,它要求我每隔几个小时清理一个站点,以便将数据保存到MySQL数据库中 我的问题是-我的铲运机应该如何运行 目前,我看到了几种方法: cronjob运行一个用PHP编写的刮取脚本,刮取数据,并将数据保存到一个平面文件(即csv)中,然后我设置一个控制器来解析数据,并让我的模型保存数据 cronjob运行一个用PHP编写的刮取脚本,刮取数据,并在收到每行数据时立即将数据保存到我的数据库中 在以上两种方法中,哪一种更好?如果我只是在胡说八道,你能给我一个更好的方法: 提

目前正在开发一个新的web服务,它要求我每隔几个小时清理一个站点,以便将数据保存到MySQL数据库中

我的问题是-我的铲运机应该如何运行

目前,我看到了几种方法:

  • cronjob运行一个用PHP编写的刮取脚本,刮取数据,并将数据保存到一个平面文件(即csv)中,然后我设置一个控制器来解析数据,并让我的模型保存数据

  • cronjob运行一个用PHP编写的刮取脚本,刮取数据,并在收到每行数据时立即将数据保存到我的数据库中

  • 在以上两种方法中,哪一种更好?如果我只是在胡说八道,你能给我一个更好的方法:

  • 提前

  • 将数据保存到我的数据库中


  • 在保存废弃数据的两种方法中,如果我是你,我会选择第二种方法。原因很简单,一旦废弃的数据已经存在于数据库中,管理这些数据就更容易了——这将为您节省生成和使用临时文件的负担


    保存(添加新数据)到平面文件可能比插入数据库快。但是,当时间/性能至关重要时,您可以更频繁地运行cronjob,也可以运行cronjob的多个副本(例如,每个副本都会丢弃不同的网站或网页)。

    第一个选项或第二个选项会对数据库的IO性能产生更大的影响吗?在我看来,第二个选项似乎会在每次出现新数据行时写入DB(我每次刮取大约2k行数据)。一次插入多行,而不是一次插入一行;2.使用不同的数据库存储废弃数据,然后将此数据库与前端用户正在访问的数据库同步。如果我理解您的意思,我应该先将所有数据清除,将数据存储到(或多个)数据结构中,然后在多行查询中,将数据保存到数据库中。其次,使用两个DBs是什么意思?