Witam
Mam skrypcik ktory odpalany recznie dziala doskonale a konkretnie laczy sie z baza mysql i dodaje nowy wpis do tabeli codziennie, o okreslonej porze.
Ten sam skrypt odpalany z crona nie umieszcza tego wspisu w bazie, a wszystkie inne funkcje w nim wystepujace dzialaja tak jak trzeba.
Co moze powodowac taki problem, czy cron nie ma zezwolenia na operacje w bazie danych ??
Spotkal ktos sie z takim problemem
pozdrawiam
Sławek
[PHP][Problem] Wpis do bazy skryptu uruchamianego z Crona
Re: [PHP][Problem] Wpis do bazy skryptu uruchamianego z Crona
A sprawdzasz błędy przez mysql_error w odpowiednim momencie?
Podaj co zwraca mysql, to może będziemy ci w stanie pomóc...
Re: [PHP][Problem] Wpis do bazy skryptu uruchamianego z Crona
Ale nie zrozumielismy sie, skrypt ten nie wyswietla zadnych bledow i dziala uruchamiany recznie, ale gdy go uruchomie z CRONA nie wykonuje zadania(nie dodaje wpisu w bazie)viraptor pisze:A sprawdzasz błędy przez mysql_error w odpowiednim momencie?Podaj co zwraca mysql, to może będziemy ci w stanie pomóc...
Re: [PHP][Problem] Wpis do bazy skryptu uruchamianego z Crona
Zgadza się - nie zrozumieliśmy się. Jak wykonujesz go ręcznie, to nie wyświetla err, bo robi wszysko poprawnie.
Odpalasz pod cron'em, więc masz 3 możliwości:
- nie uruchamia się wogóle - powinieneś zrobić echo cokolwiek, żeby dostać maila z raportem i to sprawdzić, albo
- wstawia wszystko jak trzeba do bazy, więc nie ma problemu, albo
- uruchamia się, ale nie wstawia do bazy, więc błąd występuje w czasie któregoś z poleceń mysql'a, lub masz błąd w skrypcie - jeśli nie wykonuje np. połączenia do mysql to mysql_connect zwraca błąd, jeśli nie wykonuje query, to mysql_query zwraca błąd, itd.
Nie ma możliwości, żeby:
- skrypt był poprawny
- wykonywał się z ręki i uruchamiał się pod cronem
- nie łączył się do bazy, ale nie zwracał przy tym błędów
Więc mówię jeszcze raz: po każdej linii z obsługą mysql wstaw obsługę w stylu 'or die(mysql_error());' i wstaw skrypt do cron'a. Musisz dostać wtedy albo informacje, że któraś z komend obsługi bazy się nie powiodła, albo po prostu popełniłeś jakiś błąd w skrypcie i nie próbuje on nawet połączyć się z bazą.
Sprawdzenie przez echo 'aaa', czy wogóle zostaje uruchomiony, też jest dobrym pomysłem.
Odpalasz pod cron'em, więc masz 3 możliwości:
- nie uruchamia się wogóle - powinieneś zrobić echo cokolwiek, żeby dostać maila z raportem i to sprawdzić, albo
- wstawia wszystko jak trzeba do bazy, więc nie ma problemu, albo
- uruchamia się, ale nie wstawia do bazy, więc błąd występuje w czasie któregoś z poleceń mysql'a, lub masz błąd w skrypcie - jeśli nie wykonuje np. połączenia do mysql to mysql_connect zwraca błąd, jeśli nie wykonuje query, to mysql_query zwraca błąd, itd.
Nie ma możliwości, żeby:
- skrypt był poprawny
- wykonywał się z ręki i uruchamiał się pod cronem
- nie łączył się do bazy, ale nie zwracał przy tym błędów
Więc mówię jeszcze raz: po każdej linii z obsługą mysql wstaw obsługę w stylu 'or die(mysql_error());' i wstaw skrypt do cron'a. Musisz dostać wtedy albo informacje, że któraś z komend obsługi bazy się nie powiodła, albo po prostu popełniłeś jakiś błąd w skrypcie i nie próbuje on nawet połączyć się z bazą.
Sprawdzenie przez echo 'aaa', czy wogóle zostaje uruchomiony, też jest dobrym pomysłem.
