php - PHP 大型 csv 到 SQL cron 未完全执行
问题描述
我在运行 php 脚本时遇到问题。它应该停用两个表的所有产品,然后将 csv 与表中的内容进行比较,如果产品在 CSV 中,则重新激活(以及对 csv 中产品的任何更改。)
如果我在浏览器中运行该脚本,它可以正常工作(尽管速度很慢)。但在 cron 上,它似乎停用了所有产品,仅此而已。我在尝试在这里找到解决方案时遇到了麻烦。
编辑:忘了提到每个 CSV 有大约 50,000 个条目。
如果您需要任何其他信息,例如 CSV 结构,请告诉我。
Cron PHP 脚本
<?php
set_time_limit(0);
//Deactivate All
mysqli_query($conn, "UPDATE products SET ACTIVE = 'false'");
mysqli_query($conn, "UPDATE CProducts SET ACTIVE = 'false'");
//Add or Update Products
$file = "temp/webprod.csv";
$csv = file_get_contents($file);
$Products = array_map("str_getcsv", explode("\n", $csv));
array_pop($Products);
array_shift($Products);
foreach ($Products as $item){
$productsSQL = mysqli_query($conn, "SELECT * FROM products WHERE REFERENCE = '".$item[0]."' LIMIT 1");
if (mysqli_num_rows($productsSQL) > 0){
//Update It or Activate
mysqli_query($conn, "UPDATE products SET PRODUCT_DESCRIPTION = '".$item[1]."', TILE_SIZE = '".$item[2]."', RETAIL_PRICE = '".$item[3]."', COST_PRICE = '".$item[4]."', ACTIVE = 'true' WHERE REFERENCE = '".$item[0]."'");
}else{
//Add It
mysqli_query($conn, "INSERT INTO products (REFERENCE, PRODUCT_DESCRIPTION, TILE_SIZE, RETAIL_PRICE, COST_PRICE) VALUES ('".$item[0]."', '".$item[1]."', '".$item[2]."', '".$item[3]."', '".$item[4]."')");
}
}
//Add or Update CProducts
$file = "temp/cwebprod.csv";
$csv = file_get_contents($file);
$CProducts = array_map("str_getcsv", explode("\n", $csv));
array_pop($CProducts);
array_shift($CProducts);
foreach ($CProducts as $c1Item){
$productsSQL = mysqli_query($conn, "SELECT * FROM CProducts WHERE REFERENCE = '".$c1Item[0]."' LIMIT 1");
if (mysqli_num_rows($productsSQL) > 0){
//Update It or Activate
mysqli_query($conn, "UPDATE CProducts SET PRODUCT_DESCRIPTION = '".$c1Item[1]."', TILE_SIZE = '".$c1Item[2]."', RETAIL_PRICE = '".$c1Item[3]."', COST_PRICE = '".$c1Item[4]."', ACTIVE = 'true' WHERE REFERENCE = '".$c1Item[0]."'");
}else{
//Add It
mysqli_query($conn, "INSERT INTO CProducts (REFERENCE, PRODUCT_DESCRIPTION, TILE_SIZE, RETAIL_PRICE, COST_PRICE) VALUES ('".$c1Item[0]."', '".$c1Item[1]."', '".$c1Item[2]."', '".$c1Item[3]."', '".$c1Item[4]."')");
}
}
?>
解决方案
Fixed it. It was the path to the CSV's. Feel a bit silly now.
推荐阅读
- swiftui - 如何在 SwiftUI 中使用隐藏标签删除填充/对齐选择器值?
- react-native - 如何在本机反应中检查单选按钮?
- python - 在接收空列表的lxml中使用xpath从搜索页面中提取链接但在元素页面上显示有12个具有相同xpath的链接
- windows - Odoo13 Windows 加载资源失败:服务器响应状态为 404
- python - 检查条件以连接数据框中的值(Python)
- bash - 当类似的文件名退出时,有没有办法检查目录是否存在?
- http - 阻止 web.xml 中的一些 HTTP 方法
- python - 如何在pydantic中动态生成属性?
- conv-neural-network - heatmap) ValueError: Input 0 of layer sequence is in compatible with the layer
- html - 如何使用 IntersectionOver API