我是 RETS 导入的新手,所以我开发了这个脚本:<?phpuse Aws\Credentials\Credentials;use Aws\S3\S3Client;date_default_timezone_set('America/New_York');/* --------------------------------------------------------------- GET THE ARRAY OF SELECTED FIELDS TO INDEX FROM MLS -----------------------------------------------------------*/require_once ('retsfields.php');$filteredretsfields = array_filter( $retsfields );/* --------------------------------------------------------------- DATABASE --------------------------------------------------------------------*/$servername = "xxx";$username = "xxx";$password = "xxx";$dbname = "xxx";// Create connection$conn = new mysqli($servername, $username, $password, $dbname);mysqli_query($conn, "SET SESSION sql_mode = ''");// Check connectionif ($conn->connect_error) { die("Connection failed: " . $conn->connect_error);}$startTime = date('Y-m-d H:i:s');原则上代码运行良好,虽然我有一些内存问题,请参阅我在代码中的注释。我主要关心的是如何改进、加快导入过程。我需要索引的 MLS 是 Bright MLS。Bright 要求我们在我们的服务器上存储所有数据,包括图像。所以我让这段代码运行了过去 18 个小时,它导入了大约 8000 个列表和 200.000 张图片,然后由于网关错误而崩溃。我知道这种大规模导入只需要一次(开始时),之后我可以每 x 小时进行一次部分更新。所以我有两个问题:我怎样才能让它更稳定,让我更容易地从这些崩溃中恢复过来,因为这意味着我每次都需要从头开始重新启动。我怎样才能加快导入速度,因为在这个速度下,导入所有列表需要 11 天。也许我不需要保留5年的历史我想导入没有图像的所有内容,存储图像 url,所以完整的 MLS 被索引。在我运行一个过程来一张一张地获取这些图像之后(这需要 11 天)。关于将图像导入推送到 Amazon SQS 队列的任何想法(无经验)。非常感谢
2 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
我只是回答你的两个问题
我怎样才能让它更稳定,让我更容易地从这些崩溃中恢复过来,因为这意味着我每次都需要从头开始重新启动。
您可以拆分查询以获取数据。考虑您需要最近 5 年的历史数据,然后您可以像下面这样拆分查询
$query1 = (ModificationTimestamp=2016-01-01T00:00:00-2016-12-31T23:59:59);
$query2 = (ModificationTimestamp=2017-01-01T00:00:00-2017-12-31T23:59:59);
$query3 = (ModificationTimestamp=2018-01-01T00:00:00-2018-12-31T23:59:59);
$query4 = (ModificationTimestamp=2019-01-01T00:00:00-2019-12-31T23:59:59);
$query5 = (ModificationTimestamp=2020-01-01T00:00:00+);
如果需要,进一步拆分并运行。可以根据您的逻辑在循环中运行这些拆分查询。因此,如果中间停止,您就会知道它崩溃了哪个批次以及您需要从哪里重新启动。
我怎样才能加快导入速度,因为在这个速度下,导入所有列表需要 11 天。也许我不需要保留5年的历史
这完全取决于MLS板。他们保持提取速度。一些 MLS 板可能会根据要求临时增加带宽。在这段时间内尝试提取完整数据。
- 2 回答
- 0 关注
- 169 浏览
添加回答
举报
0/150
提交
取消