Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]urochomienie pliku PHP przez cron na home.pl
Forum PHP.pl > Forum > Przedszkole
piekloniebo
Witam,
Chciałbym uruchamiać na home.pl codziennie o godzinie 15.00 powiedzmy plik .php z jednego z podkatalogów.
Z tego co wyczytałem w dokumentacji muszę stworzyć w katalogu głównym plik o nazwie cron-1500.php.

Nie wiem tylko co w tym pliku wpisać bo używanie include nie działa.


ścieżkę do katalogu głównego na home.pl zapisuje się u mnie przez poi prostu tak "/".

Ja potrzebuję odpalić skrypt który znajduję się w lokalizacji "/xxxx/skrypt.php".

Help
D
jarrod
Wydaje mi się że ten plik interpretowany jest jak inne pliki na serwerze ponieważ virtual servery są chrootowane na home.pl.

spróbuj czegoś takiego:

  1. <?php
  2. <php
  3. $commamd = "curl -s -o /dev/null http:// www. adres. twojego. serwera. home.pl /cron.php";
  4. exec($command);
  5. ?>

to oczywiście w pliku
crohn-1500.php5
lub crohn-1500.php (dla php4 o ile pamiętam)

edit: coś mi się formatowanie rozjechało...
wookieb
  1. <?php
  2. file_put_contents('log.txt', getcwd());
  3. ?>

Wrzuc to do pliku crona i juz wiesz w jakim katalogu roboczym pracuje php
piekloniebo
Kurcze zgubiłem się.
Może jeszcze raz z konkretnym adresem.
Potrzebuję tego crona żeby mi updatował dane o aukcjach allegro.
Na swojej stronie piekloniebo.pl postawionej na home.pl mam katalog allegro z całym skryptem.
Więc żeby cron mi zadziałał rozumiem że w katalogu głównym umieszczam plik:
cron-1500.php
o tresci

  1. <?php
  2. $commamd = "curl -s -o /dev/null http:// www.piekloniebo.pl /allegro/pobierz_aukcje.php";
  3. exec($command);
  4. ?>



bo cyklicznie odpalany ma być odpalany właśnie plik http:// www.piekloniebo.pl /allegro/pobierz_aukcje.php.

czy dobrze rozumiem....
questionmark.gif?
jarrod
dokładnie tak.
plik cron-1500.php umieszczasz w katalogu root-a "/"

możesz to przetestować szybciej umieszczając plik cron-5min.php5 i tam przetestować. Będzie się on uruchamiać co 5 minut (najmniej na tych serwerach).

Dokumentacja znajduje się pod adresem http://home.pl/dokumentacja/funkcjeserwera/skrypty/cron
piekloniebo
Coś mi tutaj nie trybi.
Ustawiłem ten plik na przejście co 5 min.
I jestem pewien że to automatyczne odpalenie nie startuje bo mam plik tekstowy do którego ten skrypt pwoinien zapisać dane i pliczek ciągle jest pusty na nawet po upływie 1-2 minut po wyznaczonym czasie.
Bo doczytałem w dokumentacji że ten czas może się trochę opóźnić.

Jak puszczę ten skrypt bezpośrednio wchodząc na:
http://www.piekloniebo.pl/allegro/pobierz_aukcje.php

to wszystko jest ok i plik txt dostaje dane.

Więc ten plik cron-5min.php5 nie odpala mi powyższego.


W czym może być kwestia?

Pozdr
D
jarrod
nie umieściłeś pliku (cron) w katalogu głównym SERWERA (nie twojego programu).

cytat z dokumentacji:
Cytat
Środowisko uruchomieniowe skryptów jest identyczne ze środowiskiem, w jakim uruchamiane są skrypty na serwerach wirtualnych. W praktyce wywołanie takie niewiele różni się od zwykłego wywołania GET po protokole HTTP.

czyli include też działa.

Ja ma hosting w home i cron-y mi działają (w opisany wyżej sposób)...
piekloniebo
Jarrod a jak ten plik ma wyglądać.
Bo już nie czaję.
Plik cron?
moje pliki wyglądają tak:
w katalogu głównym umieściłem:
cron-5min.php5
a w katalogu /allegro/ znajduje się pliczek który ma być uruchamiany

rozumiem że potrzebny jest jeszcze jakiś trzeci plik.

questionmark.gifquestionmark.gif
jarrod
nie. to tyle.
Wg dokumentacji i moich doświadczeń to powinno działać.

hmmm..
a sam plik cron-5min.php5 nie generuje jakiegoś błędu? możesz usunąć jego zawartość i zapisać w jakimś pliku log jakąś informację aby sprawdzić czy się wykonuje?
ja teraz zrobię to na swoim hostingu.

ok. u mnie (hosting home.pl)
zawartość pliku /cron-5min.php5
  1. <?
  2. $file = '/log.log';
  3. file_put_contents($file, "generuję się z crona w katalogu: ".getcwd());
  4. ?>

po kilku minutach:
zawartość pliku /log.log
generuję się z crona w katalogu: /
piekloniebo
Jarrod ten log file mi śmiga i zapisuje do niego ale za cholerę nie mogę odpalić skryptu w podkatalogu.

chyba tutaj coś jest nie tak:
  1. <?php
  2. $commamd = "curl -s -o /dev/null http:// www.piekloniebo.pl /allegro/pobierz_aukcje.php";
  3. exec($command);
  4. ?>


Pozd
jarrod
masz dostęp do konsoli? możesz wywołać komendę prosto z konsoli i sprawdzić czy ona działa.
piekloniebo
Nie mam konsoli.
Jak ją zainstalować?
vokiel
Na home nie ma konsoli.

Crona uruchamiam tak:

Katalog główny konta:
cron-5min.php

w pliku:

  1. <?php
  2. include '/allegro/pobierz_aukcje.php';
  3. ?>
piekloniebo
Kurcze,
jeden krok do przodu.
Użyłem tego zapisu:
<?php
include '/allegro/pobierz_aukcje.php';
?>
Zapisuje mi do pliku aukcje.txt ale w katalogu głównym.
Wcześniej też tego próbowałem ale nie miałem pustego pliku wstawionego więc nie widziałem efektu.
A powinien zapisywać do aukcje.txt w podkatalogu /allegro/.

Wygląda na to że jak cron wykonuje ten skrypt w katalogu głównym to robi zapis do głównego nawet jeżeli wykonywany jest plik z jakiegoś podkatalogu.

Widziałem gdzieś ze można zmienić katalog takim poleceniem:

chdir('allegro/');

ale wtedy chyba trzeba zmienić ścięzkę z include na:

include 'pobierz_aukcje.php';

dobrze myślę?


Dzięki za pomoc dotychczas Jarrod i Vokiel!!!
jarrod
to wynika z samej instrukcji include.
Oznacza to "dodaj w tym miejscu kod z pliku...". A to oznacza że nie ważne gdzie ten plik się znajduje, ważne, który plik wykonuje. Zatem, jeśli plik cron znajduje się w katalogu głównym to do tego miejsca odnoszą się wszelkie instrukcje operacji na plikach.
owszem - po użyciu funkcji chdir zostaniesz "przeniesiony" do tego katalogu i ten własnie katalog będzie miejscem wykonywania operacji na plikach.

Również include będzie działało od tego miejsca czyli zamiast include '/allegro/pobierz_aukcje.php'; użyjesz tylko 'pobierz_aukcje.php';

Zauważ, że nie umieściłem znaku "/" na początku. W ten sposób odnosisz się to relatywnego (od twojego aktualnego katalogu) położenia pliku.
Jeśli na początku ścieżki znajduje się "/" oznacza to, że odnosisz się do pliku względem roota czyli od głównego katalogu.
Omagi
Witam

Zakładam sobie Seo Panel na serwerze Home.pl i muszę podłączyć crona.

plik crona jest w subdomenie czyli nie w rocie. Chciał bym dodać np. cron-daily.php a on by sie odnosił i uruchamiał skrypt odświeżania pozycji w google który znajduje się /seo.omagi.pl/cron.php

Był by ktoś w stanie mi pomóc ?

Pozdrawiam
Tom:-)
Ktoś pisał że można uruchamiać cron z innego serwera i wtedy można uruchamiać go co minutę. Jak to się robi?
Aqu
Np. robisz plik php na serwerze z cronem, ustawiasz crona żeby odpalał go co minutę. W tym pliku za pomocą curla odpalasz skrypt na innym serwerze. wink.gif
Tom:-)
Ok dziękuję coś mi naświetliłeś
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.