Freesco, NND, CDN, EOS http://forum.freesco.pl/ |
|
php - problem z explode :) http://forum.freesco.pl/viewtopic.php?f=22&t=12142 |
Strona 1 z 1 |
Autor: | Mr Groch [ środa, 19 kwietnia 2006, 16:19 ] |
Tytuł: | php - problem z explode :) |
Witam Mam taki oto skrypt: function cmd($komenda) { $dane = popen($komenda,r); while (!feof($dane)) { $linie.=fgets($dane); } pclose($dane); return $linie; } $dane_tab = explode(" ",cmd('df | grep hda1')); echo $dane_tab[1]; Funkcja zwraca $linie prawidlowo: /dev/hda1 792420 418748 333420 56% / Nietsety cos sie "traci" przy explode... echo $dane_tab[0] daje tak jak powinno byc /dev/hda1 ale juz np echo $dane_tab[1], czy jakiekolwiek inne ($dane_tab[3],$dane_tab[4], itd) niestety nie wysiwetlaja nic... Gdzie sie podziala reszta znakow? Z gory dzieki |
Autor: | mund [ środa, 19 kwietnia 2006, 16:50 ] |
Tytuł: | |
Wszystko jest OK, zobacz jaki ciąg zwraca instrukcja tam jest dużo spacji i wynikiem explode jet tablica z 30 wartościami. zobaczysz wszystko ![]() |
Autor: | Mr Groch [ środa, 19 kwietnia 2006, 16:59 ] |
Tytuł: | |
Dzieki - mam gnoja ![]() Faktycznie, bylo tam mnostwo spacji, o ktorych nie pomyslalem i interesujace mnie wratosci byly porozrzucane po tablicy ![]() Oto lekarstwo jakby ktos potrzebowal na przyszlosc: function cmd($komenda) { $dane = popen($komenda,r); while (!feof($dane)) { $linie.=fgets($dane); } pclose($dane); $czysty = preg_replace('/\s+/',' ',$linie); return $czysty; } Teraz jakiekolwiek wywolanie funkcji owocuje wynikiem pozabawionym dziesiatek spacji - wszytskie powtarzajace sie spacje w stringu wynikowym sa zastepowane jedna spacja. Polecam sie pobawic czasem php, bo mozna np fajne statsy powyciagac ![]() http://groch.dyndns.org/stats.php (prawie na samym dole) Pomyslow jest masa - ruszcie szare komorki ![]() Pozdrawiam |
Autor: | mund [ środa, 19 kwietnia 2006, 20:49 ] |
Tytuł: | |
Dobra, a teraz dopisz na początku skryptu zobaczysz, że wywali błąd ![]() najpierw musisz zainicjować zmienną $linie: Jeżeli kiedyś zmienisz sobie sposób raportowania błędów w PHP to możesz się zdziwić, że skrypty przestały działać |
Autor: | Anonymous [ środa, 19 kwietnia 2006, 22:45 ] |
Tytuł: | |
Podrzuce kilka gotowców, może się przydadzą. Usuwanie zbędnych spacji: Sprawdzanie zawartości tablicy: |
Autor: | mazol [ czwartek, 20 kwietnia 2006, 19:32 ] |
Tytuł: | |
groch czy to aktualne wykorzystanie lacza u ciebie dziala na statmat czy inne rozwiazanie ? (jakies skrypty, paczki itp ) |
Autor: | Mr Groch [ czwartek, 20 kwietnia 2006, 21:48 ] |
Tytuł: | |
Ten skrypt dane bierze z Niceshapera ![]() przez sudo i wyswietla wynik w tabelce.... <? $max_u=5; // pogrubianie powyzej tej wartosci wysylania $max_d=50; // pogrubianie powyzej tej wartosci pobierania $dane=''; $pp=popen( 'sudo niceshaper stats','r' ); while ( !feof ( $pp ) ) { $dane.=fgets($pp); } pclose($pp); $fp = fopen("nicestats/nsstats.txt",'w'); fwrite($fp, $dane); fclose($fp); $chunksize = 1*(1024*1024); $handle = fopen("nicestats/nsstats.txt", 'rb'); if ($handle === false) { return false; } echo '<table align="center" width="60%" border="2" cellspacing="2" cellpadding="2" style="border-collapse:collapse"> <tr class="t01" align="center" style="padding-bottom: 10px;"><td> </td> <td><strong>Komputer</strong></td> <td align="center"><strong>Download</strong></td> <td align="center"><strong>Upload</strong></td></tr>'; while (!feof($handle)) { $buffer = fread($handle, $chunksize); $buffer3=explode("\n", $buffer); $zlicz=1; $down=0; $up=0; for ($i=2;$i<count($buffer3);$i++) { $buffer3[$i] = preg_replace('/\s+/', ' ', $buffer3[$i]); $buffer2=explode(" ", $buffer3[$i]); $down_k=substr($buffer2[4],0,-4); $up_k=substr($buffer2[9],0,-4); if ($buffer2[0] !='') { echo '<tr class="t01"><td align="right">'.($zlicz).'.</td> <td style="padding-left: 10px;">'.$buffer2[0].'</td>'; if ($down_k >= $max_d) { echo '<td align="right" style="padding-right: 30px;"><b>'.$down_k.'</b> kB/s</td>'; } else { echo '<td align="right" style="padding-right: 30px;">'.$down_k.' kB/s</td>'; } if ($up_k >= $max_u) { echo '<td align="right" style="padding-right:30px;"><b>'.$up_k.'</b> kB/s</td>'; } else { echo '<td align="right" style="padding-right:30px;">'.$up_k.' kB/s</td>'; } echo '</tr>'; $down=$down+substr($buffer2[4],0,-4); $up=$up+substr($buffer2[9],0,-4); $zlicz=$zlicz+1; } } echo '<tr class="t01"><td> </td> <td align="center"><strong>Razem</strong></td> <td align="right" style="padding-right: 30px;"><strong>'.$down; if (substr($down,-2,1)!='.') echo '.0'; echo '</strong> kB/s</td><td align="right" style="padding-right: 30px;"><strong>'.$up; if (substr($up,-2,1)!='.') echo '.0'; echo '</strong> kB/s</td></tr></table>'; } fclose($handle); ?> Szczegoly znajdziesz tutaj: http://forum.freesco.pl/viewtopic.php?t=6506&start=60 |
Autor: | mazol [ czwartek, 20 kwietnia 2006, 23:02 ] |
Tytuł: | |
eh troche mi to nie pasuje bo nice z imq nie pokazuje uploadu calego... |
Strona 1 z 1 | Strefa czasowa UTC+2godz. |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |