Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak uruchomić plik z poziomu php na takiej zasadzie jak cron
Forum PHP.pl > Forum > PHP
Norbit_24
Jak uruchomić plik z poziomu php na takiej zasadzie jak cron.. czyli żeby wykonywał się w tle.
Albo jak uruchomić crona z poziomu php?
TNT
Zerknij tutaj, może to cię jakoś nakieruje:
http://dev.typolight.org/projects/typoligh...-2.8.1/cron.php

Zadania tego crona są zapisywane jako np.
Kod
$GLOBALS['TL_CRON']['daily'][] = array('News', 'generateFeeds')
.
Resztę wyczytasz z kodu.
Norbit_24
Wydaje mi się, że lepsze będzie uruchomienie skryptu tylko z php bez cron. Jak to zrobić? Ma się on uruchamiac tak samo jak to robi cron

Gdy np. robię w nowej zakładce to wiesza całą stronie i nie da się po niej chodzić..
Dlatego zrobiłem to w cron, tzn dodaje linki do bazy i cron uruchamia skrypt.. ale jest to trochę niewygodne, bo skrypt uruchamia tylko co 1 min.
A ja chciałabym żeby uruchamiało wtedy gdy dodam linki ..;/

musi być na to jakieś inne rozwiazanie..
peku33
  1. $ostatnio = time();
  2. $co_ile = 60; //Sekund
  3. $sprawdzenie = 10; //Co ile sekund ma sprawdzic, czy nie nadszedl czas
  4. while(true)
  5. {
  6. if($ostatnio < time() + $co_ile)
  7. {
  8. twoje_funkcje();
  9. }
  10. sleep($sprawdzenie);
  11. }
  12.  
Norbit_24
Dzięki! Czyli wystarczy raz uruchomić skrypt i będzie cały czas działał?
Po przeanalizowaniu do takiego wniosku doszedłem.

proszę o odpowiedź czy tak będzie..?
zegarek84
cały czas jest pojęciem względnym - zależy, ile w sumie się będzie wykonywał (a nie spał) oraz zależy od systemu operacyjnego ^^ (jeden odlicza przerwę od pracy a drugi stwierdza, że w pracy można spać - "czy się stoi czy się leży kasa się należy ^^") - oczywiscie ten system co wlicza sleep do czasu wykonywania przerwie działanie po przekroczeniu maxsymalnego czasu wykonywania (każdy tak zrobi ale....) tu właśnie windows korzysta z zasady "czy się stoi czy się leży kasa się należy ^^" (więc stosując sleep czasu wykonywania skryptu w nim nie przedłużysz mimo, iż nic nie jest robione) - jest o tym gdzieś w manualu w bugach - niby to jak sleep działa pod unixami zgłaszali jako bug - gdzie odpowiedź padła, że to nie jest bug i suma sumarum na windowsie sleep działa nie poprawnie ;p

dokładniej co i jak to przejrzyj temat z oftopickiem od deski do deski winksmiley.jpg:
uruchamianie pliku php co 30s bez włączonego kompa - na serwie
Norbit_24
Witam ponownie.

Jestem słaby z php (tzn dopiero zaczynam ale mam już ogólne wiadomości o php, mysql).
Dlatego chciałem zlecić Wam zrobienie mi tego skryptu. Już prawie wszystko macie wyłożone na tacy, tylko to wszystko przeczytać i złożyć.

Chcę raz uruchomić skrypt i żeby działał cały czas, tzn sprawdzał co 2s czy jest link w bazie. Jeśli będzie ma uruchomić funkcje copy() i wykonać to. Jeśli w tym czasie będą następne linki to ma uruchomić 2 proces itd. Ale tutaj najważniejsze jest kontrolowanie tego. Chcę mieć kontrolę ile jest aktualnie procesów i chcę mieć tez możliwość wyłączenia danego procesu. Czyli jakiś mały panelek gdzie będę miał te dane wypisane, a ja sobie przerobie to pod mój skrypt.

Proszę się do mnie zgłaszać i podawać ceny. Zależy mi tez na czasie. Tzn fajnie by było gdyby zrobił mi to ktoś na jutro. Nie ma dużo roboty, tylko poskładać to co jest napisane na forum.
Osobie, którą już zatwierdzę do zrobienia tego skryptu pokaże kod tego pliku i inne dane.

Kontakt PW lub gg: 10788285

--
Pozdrawiam
yoltz
Jeżeli masz dostęp do serwera, uruchom harmonogram zadań napisz bat-a odpowiedniego i będzie fruwać smile.gif
Norbit_24
Nie wiem jak takie coś zrobić.

Najlepszym rozwiązaniem będzie w tym przypadku php.
Dalej jest aktualne, proszę pisać.


// edit:
Tak więc skrypt dopisał mi wookieb za co mu dziękuje. Działa tak jak chciałem.

  1. <?
  2.  
  3. include('dane.php');
  4.  
  5.  
  6. $beginScriptTime = time(); // czas rozpoczecia
  7.  
  8. $maxTiime = 60; // maksymalny czas wykonywania skryptu
  9. $checkIntervall = 2; //Co ile sekund ma sprawdzic, czy nie nadszedl czas
  10.  
  11. $downloadFiilesLimit = 5; // limit sciaganych plikow na raz
  12. while( (time() - $beginScriptTime) < $maxTime )
  13. {
  14. // liczymy ile sie sciaga
  15. $result = mysql_query('SELECT count(id) as ile FROM kolejka WHETE pobieram=1');
  16. $row = mysql_fetch_assoc($result);
  17.  
  18. // czy przebil limit
  19. if($result['ile']>$downloadFilesLimit)
  20. {
  21. // czekamy sobie
  22. sleep($checkInterval);
  23. continue;
  24. }
  25.  
  26. // szukamy pierwszego zadania
  27. $result = mysql_query('SELECT id,link,czas FROM `kolejka` WHERE pobieram=0 LIMIT 1');
  28. $count = mysql_num_rows($result);
  29.  
  30. if($count<0)
  31. {
  32. // jezeli nie ma zadania czekamy
  33. sleep($checkInterval);
  34. continue;
  35. }
  36.  
  37. $r = mysql_fetch_assoc($result);
  38. $linki = $r['link'];
  39.  
  40. preg_match('#http\://(.*"")?\.wrzuta\.pl/audio/([0-9A-Za-z_-]""*)/?([0-9A-Za-z_,-""]*)?#', $linki, $url);
  41.  
  42. if(isset($url[0]))
  43. {
  44. // oznaczamy ze wlasnie pobieramy
  45. mysql_query('UPDATE kolejka SET pobieram = 1 WHERE id = '.$r['id']);
  46. // rozpoczynamy sciaganie
  47. $startDownload = time();
  48. @copy('http://'.$url[1].""'.wrzuta.pl/sr/f/'"".$url[2], "../down2/$url[3].mp3");
  49. $link_id = $r['id'];
  50.  
  51.  
  52. // nie usuwamy rekordu tylko
  53. // a) albo go przenosimy do tabeli z logami
  54. // b) oznaczamy ze zakonczony
  55.  
  56. // chyba lepsze bedzie a
  57.  
  58.  
  59. $downloadTime = time() - $startDownload;
  60. // jezeli czas sciagania byl tak krotki (albo byl jakis blad), ze nie przekroczylimy czasu co ile ma sprawdzac
  61. // to czekamy
  62. if($downloadTime<$checkInterval)
  63. {
  64. sleep($checkInterval - $downloadTime);
  65. }
  66. }
  67. else
  68. {
  69. // bledny link to czekamy
  70. sleep($checkInterval);
  71. }
  72. }
  73. ?>
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.