Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ponownie CRON lecz w nieco innym wydaniu
Forum PHP.pl > Forum > PHP
dancone
Większość pytań dotyczy zazwyczaj zastąpienia cron'a skryptem. Nie znalazłem jednak rozwiązania tematu zbliżonego.
Mianowicie:

Admin serwera generuje cron najczęściej o każdej pełnej godzinie i zaleca umieszczenie w katalogu głównym (klienta) plik:
cron-hourly.php (odczyt cron co godzinę)
cron-daily.php (odczyt cron co dzień)
etc...
naturalnie cron odczytuje z interpreterem php, pl, py, cgi w zależności od rozszerzenia pliku w katalogu głównym.

Na czym polega nasz problem?
1. Posiadamy skrypt w jakimś katalogu, np. ./kiosk/plik.php który może być uruchomiony jedynie w katalogu ./kiosk.
W pliku cron-hourly.php zapisanym w głównym katalogu powinniśmy umieścić cały skrypt jednak nie możemy ze względu na:

- poprawność działania tego skryptu
- bezpieczeństwo danych
(ze strony praktycznej)
- ograniczenie rozmiaru cron-hourly.php (Pamiętajmy, że plików takich jak plik.php jest kilka na serwerze w innych katalogach.

2. Plik ./kiosk/plik.php potrzebujemy odświeżać (powiedzmy) co 10 min.

W prawdzie mam jakąś wizję ale... z nadmiaru pomysłów zabrnąłem w pusty zaułek.
Zapewne ktoś wymyślił lub wymyśli coś innego a przy tym w tym forum temat CRON zostanie "doszczętnie" wyczerpany.
scanner
Powiedz, co wymyśliłeś, i do czego to potrzebujesz.
A my pomożemy Ci w wyborze słusznej drogi.
dancone
Hmmm...
Gdybym był bardziej zaawansowanym informatykiem....
Potrzebuję niezależnie z różną częstotliwością odświeżać skrypty w różnych katalogach.
Wszystkie parametry pobieram z bazy sql (np. częstotliwość odświeżania, etc.).

przykładowo:

[php:1:68effbcad7]<?php

$rate = 5; //ile razy na godzinę
$r=1;
$x=1;

if($x == 1)

while ($rate > $r)
{

//ta pętla powielona w zależności od ilości skryptów.
$time = time();
$sleep = 5; //opóźnienie w sek.

while (true) {
if (time() == $time+$sleep)
break;
}
$f=fopen ("http://domena.pl/katalog/plik.php", "r");
$f=fclose($f);
$r++;
}

?>[/php:1:68effbcad7]
adwol
Cytat
naturalnie cron odczytuje z interpreterem php, pl, py, cgi w zależności od rozszerzenia pliku w katalogu głównym.

Nie. Jeśli skrypt ma poprawnie sformatowaną pierwszą linię:
Kod
#!/sciezka/do/interpretera

i ustawiony bit uruchamiania w prawach dostępu to cron po prostu uruchamia ten plik. Resztą zajmuje się system.
Cytat
1. Posiadamy skrypt w jakimś katalogu, np. ./kiosk/plik.php który może być uruchomiony jedynie w katalogu ./kiosk.

Zawsze możemy w cron-hourly.php umieścić:
[php:1:73aab1581b]<?php
chdir('kiosk');
exec('./plik.php');
?>[/php:1:73aab1581b]
Cytat
W pliku cron-hourly.php zapisanym w głównym katalogu powinniśmy umieścić cały skrypt jednak nie możemy ze względu na:

- poprawność działania tego skryptu
- bezpieczeństwo danych
(ze strony praktycznej)
- ograniczenie rozmiaru cron-hourly.php (Pamiętajmy, że plików takich jak plik.php jest kilka na serwerze w innych katalogach.

Mógłbyś przybliżyć dlaczego nie możemy bo jakoś nie widzę tu żadnych ograniczeń.
Cytat
2. Plik ./kiosk/plik.php potrzebujemy odświeżać (powiedzmy) co 10 min.

Rozwiązanie może brutalne i nie zawsze skuteczne ale jeśli admin nie pozwala na korzystanie z crona częściej niż raz na godzinę:
[php:1:73aab1581b]<?php
chdir('kiosk');
for ($i = 0; $i < 6; $i++)
{
exec('./plik.php');
sleep(600);
}
?>[/php:1:73aab1581b]
Można też użyć programu at.
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.