0
私はxstファイルをダウンロードしてからインポートプロセスを開始する、prestashopのPHPスクリプトを用意しています。スクリプトは、最後にダウンロードしたファイルがデータベースエントリの時刻と一致するかどうかをチェックし、一致しない場合は新しいxmlをダウンロードします。主にifコマンド全体が間違っているので、この全部がうまくいきません。 (通常、ファイルをダウンロードしてから、時間を確認する必要があります)。とにかく、ファイルが小さいので、これはすべて必須ではありません。代わりに、このif文を削除して、以前にダウンロードしたファイルを置き換えてファイルをダウンロードする必要があります。 誰でも、日付をチェックするifコマンドを削除してもらえますか?私は、これはそのチェックなしであると考えていPHPスクリプトの時間チェックを削除する
ini_set('display_errors', 0);
//ini_set('memory_limit', '812M');
set_time_limit(0);
include_once realpath(__DIR__.'/../../')."/config/config.inc.php";
include_once realpath(__DIR__)."/XmlFeedImporter.php";
if(Configuration :: get('CRONRUN_STATUS') && Configuration :: get('PRODUCTXML_URL')){
$remoteXmlFile = Configuration :: get('PRODUCTXML_URL');
$url_parts = parse_url($remoteXmlFile);
$isCLI = (php_sapi_name() == 'cli');
if($isCLI){
// For live
$server_host = $url_parts['host'];
$server_root = _PS_ROOT_DIR_.'/';
} else {
$server_host = $_SERVER['HTTP_HOST'];
$server_root = $_SERVER['DOCUMENT_ROOT'].'/';
}
$outputLocalCsv = _PS_DOWNLOAD_DIR_.'products_output_'.date('Y-m-d').'.csv';
$objXmlFeedImporter = new XmlFeedImporter();
if(strpos($remoteXmlFile,$server_host) === false){
// CHeck whether same remote file was download or not ?
if (((int)Configuration :: get('PRODUCTXML_DOWNLOAD_DATE') && (int)Configuration :: get('PRODUCTXML_UPDATE_TIME')) && ((int)Configuration :: get('PRODUCTXML_DOWNLOAD_DATE') > (int)Configuration :: get('PRODUCTXML_UPDATE_TIME'))) {
$inputLocalXml = _PS_UPLOAD_DIR_.'products_input_'.date('Y-m-d', Configuration :: get('PRODUCTXML_DOWNLOAD_DATE')).'.xml';
} else {
$time = time();
$inputLocalXml = _PS_UPLOAD_DIR_.'products_input_'.date('Y-m-d', $time).'.xml';
$downloadedBytes = $objXmlFeedImporter->downloadRemoteFile($remoteXmlFile, $inputLocalXml);
Configuration :: updateValue('PRODUCTXML_DOWNLOAD_DATE', $time);
if($downloadedBytes == 0){
d('Nothing was downloaded from '.$remoteXmlFile.' !!');
}
}
} else {
$file_parts = explode($server_host, $remoteXmlFile);
if($server_host == 'localhost'){
$server_root = str_replace(DS.'my-presta','',$server_root);
}
$inputLocalXml = $server_root.trim($file_parts[1],'/');
}
//d($inputLocalXml);
$objXmlFeedImporter->setInputFile($inputLocalXml);
// Get products in a csv
if(Configuration :: get('CREATE_XML2CSV')){
$objXmlFeedImporter->setOutputFile($outputLocalCsv);
}
//$objXmlFeedImporter->_justCount = true; // just count products
//$objXmlFeedImporter->_dump = true; // print product data
try{
$objXmlFeedImporter->runParser(); // run parser
} catch(Exception $e){
// Send Email
print_r($e);
}
}
?>
こんにちは、これは私も拳を削除したものですが、スクリプトを削除した後でもファイルをダウンロードしませんでした。 – user3292026
私は編集してd if節の外側にあるownload関数。おそらくあなたのstrpos($ remoteXmlFile、$ server_host)がfalseに評価されず、else節にdownloadRemoteFileがありませんでした。 – sadlyblue