如何使用PHP从外部CSV文件链接更新CSV文件?

xqkwcwgp  于 2022-12-21  发布在  PHP
关注(0)|答案(1)|浏览(127)

我需要帮助我的PHP代码。
我们有一个电子商务网站与wordpress和woocommerce。该网站需要通过数据源从另一个网站的CSV文件导入产品。
数据馈送设置需要网站文件系统中的PHP文件和执行PHP文件的Cron作业。
PHP文件从4dkmiglm.csv(www.example.com)获取数据cdn.sandberg.world,并将其附加到pricelist_206876.csv(在我们的系统中)
这两个CSV文件的列数不同。
PHP代码如下所示:

`<?php
$current = file_get_contents("https://cdn.sandberg.world/feeds/5dkmiglm.csv");

$pricefile = "/pricelist_206876.csv"; 

file_put_contents($pricefile,$current); 
?>`

我将PHP文件放在需要更新的价格表所在的文件夹中,但没有发生任何变化。pricelist_206876没有按预期更新。
Cron作业不在wp-admin面板中,而是在我们的Web主机Inleed的控制面板(DirectAdmin)中。/usr/bin/php -q /开发人员/空“/主页/goffero/域名/goffero.com/datafeedcode.php
我尝试用各种方法修改PHP代码,但没有结果。realpath() 不起作用。
我更改了文件的写/读/执行系统权限,但这并没有解决问题。

bzzcjhmw

bzzcjhmw1#

我有一个项目在magento和进口的产品是做同样的方式,因为你想要的。我们采取了csv与10列或更多,但我们只出口数量和SKU在这种情况下。
这里我们所做的

<?php 

    // downloaded file path
    $filesRoot = BP.'/pub/path/to/your/folder/';

    //If folder doesn't exist, create it
    if (!file_exists($filesRoot)) {
        mkdir($filesRoot, 0777, true);
    }

    //their file
    $fileIn = $filesRoot.'5dkmiglm.csv';

    //your file
    $fileOut = $filesRoot.'pricelist_206876.csv';

    $url = 'https://cdn.sandberg.world/feeds/5dkmiglm.csv';

    //Download their csv in your environment
    if(!file_put_contents($fileIn, file_get_contents($url))) {
        die('errore download file');
    } 

    $countLine = 0;
    $fileInOpn = fopen($fileIn, 'r');
    $fileOutOpn = fopen($fileOut, 'w');
    while (($line = fgetcsv($fileInOpn)) !== FALSE) {     

        //position of each column
        if($countLine==0){
            $keyQty = array_search('qty', $line);
            $keySku = array_search('sku', $line);
        }
        $newLineRev = [];
        foreach ($line as $key => $el) {
            if ($key == $keyQty || $key == $keySku) {
                $newLineRev[$keyQty] = $line[$keyQty];
                $newLineRev[$keySku] = $line[$keySku];
                continue;
            }
        }

        // Write in your file
        fputcsv($fileOutOpn, $newLineRev);
        $countLine++;
    }
    fclose($fileInOpn);
    fclose($fileOutOpn);

相关问题