Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak uruchomić plik z poziomu php na takiej zasadzie jak cron
Norbit_24
post 28.02.2010, 13:06:53
Post #1





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

Ostrzeżenie: (0%)
-----


Jak uruchomić plik z poziomu php na takiej zasadzie jak cron.. czyli żeby wykonywał się w tle.
Albo jak uruchomić crona z poziomu php?
Go to the top of the page
+Quote Post
TNT
post 28.02.2010, 13:22:52
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 2
Dołączył: 14.04.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Norbit_24
post 28.02.2010, 20:42:43
Post #3





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

Ostrzeżenie: (0%)
-----


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..
Go to the top of the page
+Quote Post
peku33
post 28.02.2010, 20:55:34
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 22.01.2010

Ostrzeżenie: (0%)
-----


  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.  


Ten post edytował peku33 28.02.2010, 20:56:05
Go to the top of the page
+Quote Post
Norbit_24
post 1.03.2010, 00:05:15
Post #5





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

Ostrzeżenie: (0%)
-----


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..?
Go to the top of the page
+Quote Post
zegarek84
post 1.03.2010, 01:16:25
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


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

Ten post edytował zegarek84 1.03.2010, 01:25:32


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Norbit_24
post 3.03.2010, 19:40:55
Post #7





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
yoltz
post 3.03.2010, 23:00:48
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.02.2008

Ostrzeżenie: (0%)
-----


Jeżeli masz dostęp do serwera, uruchom harmonogram zadań napisz bat-a odpowiedniego i będzie fruwać smile.gif


--------------------
Keep moving forward...
Go to the top of the page
+Quote Post
Norbit_24
post 4.03.2010, 22:21:37
Post #9





Grupa: Zarejestrowani
Postów: 163
Pomógł: 2
Dołączył: 7.03.2009

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Norbit_24 5.03.2010, 08:45:32
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 03:29