Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z wykonaniem programu exe
flashdev
post 13.05.2009, 15:13:04
Post #1





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Witam,

Mam problem z wykonaniem programu exe z poziomu php.
Program bezpośrednio uruchomiony w windowsie lub konsoli command wykonuje się i zwraca kod błędu 0.
Natomiast uruchomiony z poziomu php (testowałem 3 różne funkcje), znajduje się cały czas na liście procesów w task menager.

Chodzi o program synchronizujący czas s serwerem ntp. Muszę napisać taki skrypt u siebie na komputerze lokalnym, ponieważ zegar chodzi jak chce.

Wszystkie pliki wrzucam tutaj:
http://www.sendspace.pl/file/K36Gy5ly/
Niestety w taki sposób, ponieważ nie wiem jak na tym forum dodać załacznik.


Edit:

Może powinienem był sprecyzować pytanie.
Dlaczego w moim kodzie program do synchronizacji czasu, uruchomiony poprzez php nie chce prawidłowow się wykonać i zamknąć, a co za tym idzie nie kończy się wykonywanie skryptu.

Ps. Gdyby ktoś bał się uruchomić tego pliku exe, to podaję skąd można ściągnąć ten program:
<a href="http://www.google.com/search?client=opera&...-8&oe=utf-8" target="_blank">http://www.google.com/search?client=opera&...-8&oe=utf-8</a>

Ten post edytował flashdev 13.05.2009, 15:13:45


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
marcio
post 13.05.2009, 15:28:26
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
(testowałem 3 różne funkcje)

Mi przychodza do glowy 4 funkcje.

Czy przy tych 3 funkcjach aplikacja tak samo sie zachowywuje?

Ten post edytował marcio 13.05.2009, 15:28:35


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
flashdev
post 13.05.2009, 18:08:09
Post #3





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


testowałem:

Kod
exec("sntp\\adSNTP.exe");
//system("sntp\\adSNTP.exe");
//passthru("sntp\\adSNTP.exe");


Za każdym razem proces jest ciągle uruchomiony i nie chce się zamknąć, a skrypt nie kończy swego działania.

Może jest jakiś lepszy sposób na zdobycie aktualnego czasu?


--------------------
Go to the top of the page
+Quote Post
marcio
post 13.05.2009, 21:11:52
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Nie wiem czy to wiele zmieni ale uzyj jeszcze:
shell_exec();
popen();

Cytat
Może jest jakiś lepszy sposób na zdobycie aktualnego czasu?

Chodzi o aktualny czas systemowy?

Bo nie rozumiem.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
bim2
post 13.05.2009, 21:45:06
Post #5





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Jeśli chcesz aby skrypt zakończył działanie, daj
sntp\\adSNTP.exe >> \dev\null\&
Chyba smile.gif


--------------------
Go to the top of the page
+Quote Post
flashdev
post 14.05.2009, 13:03:12
Post #6





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(marcio @ 13.05.2009, 22:11:52 ) *
Nie wiem czy to wiele zmieni ale uzyj jeszcze:
shell_exec();
popen();


Nie wiem do końca jak użyć tego popen().
shell_exec() działa w tym przypadku tak samo jak exec() i jak te wszystkie wymienione funkcje.

Cytat(bim2 @ 13.05.2009, 22:45:06 ) *
Jeśli chcesz aby skrypt zakończył działanie, daj
sntp\\adSNTP.exe >> \dev\null\&
Chyba smile.gif


Co robi operator ">>" i co to jest "\dev\null\&".
Wpisanie tego w linii poleceń dosa wyrzuca tylko błędy.

Cytat(marcio @ 13.05.2009, 22:11:52 ) *
Chodzi o aktualny czas systemowy?

Bo nie rozumiem.


Nie napisałem na początku o co mi chodzi, a przecież nie każdy musi to odrazu wiedzieć.
Chce pobierać w swoim skrypcie aktualny czas przy pomocy funkcji date(), po to aby móc poukładać sobie w bazie danych pewne zdarzenia występujące w określonym czasie.
Jednak mój zegar systemowy nigdy nie działa zbyt dokładnie. W ciągu jednego dnia potrafi się przestawić nawet prawie 10 minut. A czasami lubi się przenieść do roku 2060. Dlatego właśnie chciałbym z poziomu php uruchamiać ten program raz na kilka-kilkanaście minut.


--------------------
Go to the top of the page
+Quote Post
marcio
post 14.05.2009, 13:26:35
Post #7





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $f = popen ("/bin/bash","w");
  3. ?>

Przegladam manuala php i tam masz np przyklady otwierasz powloke do zapisu i wysylasz do niej polecenia za pomoca fwrite().

I wiele innych sam poogladaj http://it.php.net/popen.

P.S a masz napewno wlaczone funkcje ktore probowalems uzyc bo nie pamietam teraz ale jak sa wylaczone to nie zwraca error'u wiec wiesz moze to jest tym spowodowane.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
flashdev
post 14.05.2009, 13:41:01
Post #8





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(marcio @ 14.05.2009, 14:26:35 ) *
  1. <?php
  2. $f = popen ("/bin/bash","w");
  3. ?>

Przegladam manuala php i tam masz np przyklady otwierasz powloke do zapisu i wysylasz do niej polecenia za pomoca fwrite().

I wiele innych sam poogladaj http://it.php.net/popen.


Słabo się w tym orientuje i po użytej przez Ciebie ścieżce mam wątpliwości czy to wogóle działa pod windowsem.

W każdym razie nie chodzi mi o poznanie wszystkich metod otwierania pliku, które i tak pewnie tutaj zawiodą.
Chcę sie dowiedzieć dlaczego program, który uruchamiam podwójnym kliknięciem lub wpisując jego nazwę w konsoli dos`a. Wykonuje się poprawnie i kończy swoje działanie, a po uruchomieniu przy pomocy php, nie wykonuje tego co trzeba i nie kończy swojego działaniatylko dalej "wisi" w uruchomionych procesach.
Program uruchamia sie bez żadnych parametrów i nie wymaga interakcji z użytkownikiem.

I jeszcze jedno pytanie.
Zadałeś sobie trud ściągnięcia mojego pliku i próby uruchomienia go w taki sposób, czy próbujesz mi pomóc na ślepo?


Cytat(marcio @ 14.05.2009, 14:26:35 ) *
P.S a masz napewno wlaczone funkcje ktore probowalems uzyc bo nie pamietam teraz ale jak sa wylaczone to nie zwraca error'u wiec wiesz moze to jest tym spowodowane.


Są włączone. Testowałem je plikami .bat i innymi poleceniami.


--------------------
Go to the top of the page
+Quote Post
marcio
post 14.05.2009, 17:04:12
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Zadałeś sobie trud ściągnięcia mojego pliku i próby uruchomienia go w taki sposób, czy próbujesz mi pomóc na ślepo?

No troche na slepo nie chce sciagac tongue.gif

A jeszcze jedno pytanie probujesz otworzyc plik z prawami Root'a??

Oczywiscie przyklad podalem dla Unix'ow ale mysle ze konsole w Win tez dasz rade otworzyc.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
flashdev
post 14.05.2009, 17:19:03
Post #10





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Dodam jeszcze, że po uruchomieniu programu w konsoli są wykonywane takie operacje:

Kod
Twój PC                  : 157.158.161.210 [6c4d8499d24b4c1]
Serwer czasu             : vega.cbk.poznan.pl [150.254.183.15]
Numer portu              : 123
Head1.Byte1.             : Dec(28), Hex(0000001c) [pierwszy bajt datagramu]
.Wskaźnik sekundy (LI)   : 0 [brak ostrzeżeń]
.Numer wersji (VN)       : 3 [oznaczenie wer. protokołu]
.Tryb pracy              : 4 [serwer]
Stratum                  : 1 [pierwszorzędne źródło (np. zegar radiowy)]
Interwał odpytujący      : 0 [2**0 = 1 s, maks. odst. pomiędzy komunikatami]
Prec. zegara serwera     : -15 [2**-15 = 0,000030517578... s = 32768,0 Hz]
Opóźnienie podróży       : 0,000 s [względem pierwszorzędnego źródła]
Współczynnik dyspersji   : 0,001 s [względem pierwszorzędnego źródła]
ID źródła czasu          : PPS
Ostatni czas źródła      : 2009-05-14 17:16:32,521
Czas wysłania PC         : 2009-05-14 17:16:40,547 [T1]
Czas odbioru serwera     : 2009-05-14 17:16:40,328 [T2]
Czas odesłania serwera   : 2009-05-14 17:16:40,328 [T3]
Czas odbioru PC          : 2009-05-14 17:16:40,564 [T4]
Opóźnienie podróży       : 0,017 s [(T4 - T1) - (T3 - T2)]
Poprawka zegara PC       : -0,227 s [((T2 - T1) + (T3 - T4)) / 2]
Twoja strefa czasowa     : Środkowoeuropejski czas stand. [GMT+02:00]
Poprawiony czas lokalny  : 2009-05-14 17:16:40 [czwartek]
Poprawiony czas GMT      : 2009-05-14 15:16:40 [czwartek]
Synchronizacja zegara PC : OK [kod rezultatu: 0]


Z kolei po uruchomieniu poprzez php program zatrzymuje się po wyliczeniu współczynnika dyspresji (cokolwiek to jest). A zatem php zwraca coś takiego:

Kod
Array ( [0] => adSNTP - Klient SNTP wer. 1.3.2, Win NT 5.1 (2600, Dodatek Service Pack 2) [1] => Copyright (c) 2005, 2006 A. Osiciäska-Dudka, A. Dudka (2009-05-13) [2] => [3] => Tw˘j PC : 157.158.161.210 [6c4d8499d24b4c1] [4] => Serwer czasu : vega.cbk.poznan.pl [150.254.183.15] [5] => Numer portu : 123 [6] => Head1.Byte1. : Dec(28), Hex(0000001c) [pierwszy bajt datagramu] [7] => .WskaŤnik sekundy (LI) : 0 [brak ostrzežeä] [8] => .Numer wersji (VN) : 3 [oznaczenie wer. protokoˆu] [9] => .Tryb pracy : 4 [serwer] [10] => Stratum : 1 [pierwszorzŠdne Ťr˘dˆo (np. zegar radiowy)] [11] => Interwaˆ odpytujĽcy : 0 [2**0 = 1 s, maks. odst. pomiŠdzy komunikatami] [12] => Prec. zegara serwera : -17 [2**-17 = 0,000007629395... s = 131072,0 Hz] [13] => Op˘Ťnienie podr˘žy : 0,000 s [wzglŠdem pierwszorzŠdnego Ťr˘dˆa] [14] => Wsp˘ˆczynnik dyspersji : 0,006 s [wzglŠdem pierwszorzŠdnego Ťr˘dˆa] )


Nie mam pojęcia co się w tym programie dzieje, że uruchomiony z php zatrzymuje się w tym miejscu. Nie zanm na tyle języka Delphi.

Widzę, że raczej nie ma pomysłów na ten problem więc prościej będzie jak poszukam kodu php, który pobiera aktualny czas z serwera ntp.

Dzięki za pomoc.


--------------------
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: 27.06.2025 - 07:25