Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak sprawdzić czy skrypt jest wykonywany
pietrekk
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 11.09.2009

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


witam,
uruchamiam skrypt php w konsoli. czy jest mozliwosc sprawdzic czy skrypt jest wlasnie wykonywany i jesli nie to go uruchomic? np. zeby w cronie sprawdzac czy jest uruchomiony a jak nie to uruchomic?

Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Stwórz sobie na serwerze jakiś plik (może być pusty, nie ma to znaczenia), który będzie jakby identyfikatorem procesu. Podczas uruchamiania zadania zakładaj blokadę na ten plik, a zwalniaj ją gdy kończysz zadanie. W przypadku gdy w międzyczasie skrypt się wysypie blokada zostanie automatycznie zdjęta. Sprawdzenie czy skrypt pracuje sprowadza się do sprawdzenia czy plik procesu ma założoną blokadę.

Poniżej masz przykładową klasę, której używam w swoich projektach:
  1. <?php
  2. /**
  3.  * Klasa monitorująca działanie procesu.
  4.  *
  5.  * @author Michał "phpion" Płonka
  6.  * @package Process
  7.  */
  8. class Process {
  9. /**
  10. * Plik, na podstawie którego określany jest status działania procesu.
  11. *
  12. * @var string
  13. */
  14. protected $file;
  15.  
  16. /**
  17. * Uchwyt pliku.
  18. *
  19. * @var resource
  20. */
  21. protected $handler = NULL;
  22.  
  23. /**
  24. * Konstruktor klasy.
  25. *
  26. * @param string $file Plik, na podstawie którego określany jest status działania procesu.
  27. */
  28. public function __construct($file) {
  29. $this->file = (string)$file;
  30. $this->handler = fopen($this->file, 'w');
  31. }
  32.  
  33. /**
  34. * Rozpoczyna działanie procesu.
  35. *
  36. * Nakłada blokadę na plik.
  37. *
  38. */
  39. public function start() {
  40. if (is_null($this->handler)) {
  41. $this->handler = fopen($this->file, 'w');
  42. }
  43.  
  44. flock($this->handler, LOCK_EX + LOCK_NB);
  45. }
  46.  
  47. /**
  48. * Kończy działanie procesu.
  49. *
  50. * Zdejmuje blokadę z pliku.
  51. *
  52. */
  53. public function stop() {
  54. if (!is_null($this->handler) && is_resource($this->handler)) {
  55. flock($this->handler, LOCK_UN);
  56. fclose($this->handler);
  57. }
  58.  
  59. $this->handler = NULL;
  60. }
  61.  
  62. /**
  63. * Sprawdza czy proces jest uruchomiony.
  64. *
  65. * @return bool Zwraca TRUE gdy proces jest uruchomiony, FALSE w przeciwnym wypadku.
  66. */
  67. public function is_running() {
  68. return !flock($this->handler, LOCK_EX + LOCK_NB);
  69. }
  70.  
  71. const VERSION = '1.0';
  72. }
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 Aktualny czas: 20.08.2025 - 00:57