Я хотел бы запустить задание cron, выполняющее скрипт php.
Цель сценария — создать CSV-файл с данными, выбранными из базы данных, и сохранить их на сервере.
Это команда, которую я создал:
php -c /home1/breezeea/public_html/php.ini /home1/breezeea/public_html/portaltest/ProductsToImportGenerator.php
Я также настроил подтверждение по электронной почте, и оно, кажется, работает, но файл не создается в каталоге загрузки.
На экране отображается электронное письмо с подтверждением, которое я получаю. Существует содержимое файла CSV, поэтому я думаю, что PHP-скрипт выполняется правильно:
Это самая важная часть кода php-скрипта ($ productsArr — это продукты, извлеченные из базы данных):
function products_to_csv($productsArr, $filename = "productsToImport.csv", $delimiter=",")
{
$f = fopen('php://memory', 'w');
$headers = array("Product Name", "Product Url", "excerpt", "description", "Product Status", "Menu_order", "SKU", "Downloadable",
"Virtual", "visibility", "quantity", "stock status", "allow backorders", "manage_stock", "regular_price",
"sale_price", "weight", "length", "width", "height", "featureD", "sale_price_dates_from",
"sale_price_dates_to","download_limit", "download_expiry", "images", "download File name", "type", "category",
"product_tag", "shipping class");
fputcsv($f, $headers, $delimiter);
foreach($productsArr as $product)
fputcsv($f, $product, $delimiter);
fseek($f, 0);
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="'.$filename.'";');
fpassthru($f);
fclose($f);
}
Должен ли я как-то изменить команду, чтобы сохранить csv в каталоге загрузки?
Спасибо за любую помощь
Ваш скрипт не сохраняет файл на сервере, он только отправляет его в виде вложения в браузер, открывающий скрипт. Вы должны изменить fpassthru
в file_put_contents () сохранить файл на сервере.
Других решений пока нет …