2017-03-07 2 views
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); 
    } 

} 
?> 

答えて

0

これはスクリプトである

あなたが話していた場合、これはあるように思わ
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 ? 
     $time = time(); 
     $inputLocalXml = _PS_UPLOAD_DIR_.'products_input_'.date('Y-m-d', $time).'.xml'; 

    } 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],'/'); 
    } 

    $downloadedBytes = $objXmlFeedImporter->downloadRemoteFile($remoteXmlFile, $inputLocalXml); 
    Configuration :: updateValue('PRODUCTXML_DOWNLOAD_DATE', $time); 
    if($downloadedBytes == 0){ 
      d('Nothing was downloaded from '.$remoteXmlFile.' !!'); 
     } 

    //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); 
    } 

} 
?> 

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'))) 
+0

こんにちは、これは私も拳を削除したものですが、スクリプトを削除した後でもファイルをダウンロードしませんでした。 – user3292026

+0

私は編集してd if節の外側にあるownload関数。おそらくあなたのstrpos($ remoteXmlFile、$ server_host)がfalseに評価されず、else節にdownloadRemoteFileがありませんでした。 – sadlyblue

関連する問題