Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> FIFO oraz PHP, .... czyli jak sprawdzać czy można zapisać?
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie!
Siedze od wczoraj nad zdawało by się prostym killkulinijkowym kodem mającym za zadanie kontrolować mplayera.

  1. <?php
  2. //Mplayera odpalamy tak:
  3. //mplayer -ao alsa -quiet -slave -input file=/root/mplayerCtrl /tmp/plik.mp3 >/root/mplayerOut
  4.  
  5. $ctrlF = '/root/mplayerCtrl'; //Fifo
  6. $outF = '/root/mplayerOut'; //Zwykly plik
  7.  
  8. $cfp = fopen($ctrlF, "w");
  9. fclose(fopen($outF, "w+")); //Czyscimy z poprzednich smieci outfile
  10. fwrite($cfp, $argv[1]."\n");
  11.  
  12. while(empty($r))$r=file_get_contents($outF); //Mplayer zwraca z opznieniem totez czasmi trzba zaczekac
  13. echo $r."\n";
  14. ?>


I skrypt niestety nie działa - zawiesza się zazwyczaj przy fwrite. Jedyne co udało mi się zmusić do działania to poniższy kod:

  1. <?
  2. $ctrlF = '/root/mplayerCtrl';
  3. $outF = '/root/mplayerOut';
  4.  
  5. $mpst=shell_exec('ps u -C "mplayer" | grep "mplayer"'); if(empty($mpst))die;
  6. echo "Clean out file\n";
  7. fclose(fopen($outF, "w+")); //Open, erase, close
  8. echo "Send cmd '".$argv[1]."'\n";
  9. shell_exec("echo ".$argv[1]." > $ctrlF");
  10. echo "Read response\n";
  11. while(empty($r))$r=file_get_contents($outF);
  12. echo $r."\n";
  13. echo "Done\n\n";
  14. ?>

Ale chyba każdy widzi, że jest ekhem ... do kitu smile.gif Chcę to zrobić za pomocą php - bez execów.

Ten post edytował kiler129 2.12.2010, 12:57:32


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Mam pytanie, piszesz że zawiesza się na fwrite - jestem ślepy ale go nie widzę.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(fifi209 @ 2.12.2010, 12:50:29 ) *
Mam pytanie, piszesz że zawiesza się na fwrite - jestem ślepy ale go nie widzę.


Powinno być po fclose smile.gif
Skasowałem niechcący. Poprawione.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


A jak odpalasz sam plik php i przekazujesz do niego argumenty?

Najpierw czyścisz plik mplayerOut a potem starasz się go czytać, co ile mplayer zwraca coś do tego pliku? Może masz timeout?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
kiler129
post
Post #5





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Odpalam go normlanie z konsolki: php test1.php get_file_name smile.gif
Czyszcze plik mplayerOut ponieważ na starcie mplayer wrzuca tam śmieci dotyczące m.in. niezalezienia ekranu do video czy braku LIRC (szybciej przed każdą komendą czyścić niż sprawdzać czy to pierwsza komenda czy kolejna).
Mplayer zwraca po ok. 30-40ms ale z tym jest różnie - zależy od komendy,


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Quadina
post
Post #6





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Jak dla mnie fwrite wisi, bo plik do którego chcesz pisać jest zablokowany. Spróbuj użyć odpowiednio flock();
http://pl2.php.net/manual/pl/function.flock.php


--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
kiler129
post
Post #7





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Faktycznie wynikło to z blokady pliku ... taka głupota, aż wstyd smile.gif


--------------------
flexiCMS v2 [|||||||+--] 75% done
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: 19.08.2025 - 14:11