Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Różne wyniki po uruchomieniu skryptu w przeglądarce i cronie
Forum PHP.pl > Forum > PHP
patrycjaBS
Mam małą zagwozdkę. Napisałam system aktualizacji towarów do SOTESHOP i jednym z procesów zachodzących podczas aktualizacji jest przepisanie pliku XML dostawcy do tabeli w bazie danych. Jeżeli skrypt, który się tym zajmuje uruchamiam ręcznie - w przeglądarce - wszystkie wartości wpisywane do bazy danych są prawidłowe. Jeżeli ustawię to jako zadanie cron, w kilku pozycjach w bazie danych pojawiają się wartości nieprawidłowe np. stan magazynowy (w pliku 0 szt., w bd 1 szt.). Z czego może wynikać taka różnica?
rocktech.pl
Witam.

Pokaż kod newralgicznych fragmentów.


  1. //Sprawdź czy wartość poniższej stałej jest taka sama dla PHP_SAPI === 'cli' i PHP_SAPI = 'apache2handler' .
  2. print PHP_VERSION_ID;
patrycjaBS
wersja ta sama

fragment pliku XML dostawcy:

  1. <data>
  2. <product_list>
  3. <product>
  4. <product_id>23123</product_id>
  5. <product_name>nazwa</product_name>
  6. <product_code>kod</product_code>
  7. <category_id>7</category_id>
  8. <brand>producent</brand>
  9. <price_b2b_net>610.00</price_b2b_net>
  10. <price_retail_gross>910.00</price_retail_gross>
  11. <price_retail_gross_with_discount>910.00</price_retail_gross_with_discount>
  12. <quantity>0</quantity>
  13. </product>
  14. </product_list>
  15. </data>


pobranie wartości z cennika i zapisanie do zmiennych:
  1. $xml = new SimpleXMLElement($cennik);
  2. foreach($xml->product_list->product as $product)
  3. {
  4. $product_id = (int)$product->product_id;
  5. $product_name = $product->product_name;
  6. $product_code = $product->product_code;
  7. $category_id = (int)$product->category_id;
  8. $brand = $product->brand;
  9. $price_b2b_net = (float)$product->price_b2b_net;
  10. $price_retail_gross = (float)$product->price_retail_gross;
  11. $price_retail_gross_with_discount = (float)$product->price_retail_gross_with_discount;
  12. $quantity = (int)$product->quantity;
  13. }


zapytanie aktualizujące:
  1. $zapytanie = 'UPDATE _aktualizacja_cennik SET '
  2. .'product_name=\''.addslashes($product_name).'\', '
  3. .'product_code=\''.addslashes($product_code).'\', '
  4. .'category_id='.$category_id.', '
  5. .'brand=\''.addslashes($brand).'\', '
  6. .'price_b2b_net='.$price_b2b_net.', '
  7. .'price_retail_gross='.$price_retail_gross.', '
  8. .'price_retail_gross_with_discount='.$price_retail_gross_with_discount.', '
  9. .'quantity='.$quantity.', '
  10. .'ostatnio_w_cenniku=\''.date("Y-m-d").'\' '
  11. .'WHERE product_id='.$product_id;
  12. $wynik = $mysqli->query($zapytanie);


wątpię, że to coś w kodzie (chyba, że brakującego;)) - skrypt uruchamiany z przeglądarki działa ok.

fragment zapytania wygenerowanego podczas uruchomienia przez przeglądarkę:
  1. UPDATE _aktualizacja_cennik SET product_name='nazwa', product_code='kod', category_id=7, brand='producent', price_b2b_net=610, price_retail_gross=910, price_retail_gross_with_discount=910, quantity=0...

fragment zapytania wygenerowanego podczas uruchomienia przez cron:
  1. UPDATE _aktualizacja_cennik SET product_name='nazwa', product_code='kod', category_id=7, brand='producent', price_b2b_net=610, price_retail_gross=910, price_retail_gross_with_discount=910, quantity=1...

sad.gif

kodowanie wszędzie (baza, skrypty, plik) UTF-8

Temat można zamknąć, problem był idiotyczny i związany ze ścieżką do pliku XML - w skrypcie była podana ścieżka względna, zamiast bezwzględnej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.