Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Почему не пишет в файл

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: запись из сокета
nordghost
Отправлено: 10 Февраля, 2012 - 13:48:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Скрипт сервера:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $addres= '192.168.168.136';
  4. $port=10001;
  5. $sock=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  6. socket_bind($sock, $addres, $port);
  7. while(true){
  8. socket_listen($sock, 5);
  9. $msgsock=socket_accept($sock);
  10. $buf=socket_read($msgsock, 1024);
  11. $cli1=preg_match("~Com1(.*)Com1~Uis",$buf ,$info);
  12. $cli2=preg_match("~Com2(.*)Com2~Uis",$buf ,$info2);
  13. if($cli1==true){
  14. $ofile=fopen('logfiles\log1.txt', 'a');
  15. fwrite($ofile, $info[1]);
  16. fclose($ofile);
  17. }
  18. if($cli2==true){
  19. $ofile=fopen('logfiles\log2.txt', 'a');
  20. fwrite($ofile, $info2[1]);
  21. fclose($ofile);
  22. }
  23. }
  24. ?>


Клиент1:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4. while(true){
  5. $memusage=file_get_contents("../../../proc/meminfo");
  6. preg_match_all("~([0-9]+)~m", $memusage, $memusagearr);
  7. $procusage=file_get_contents("../../../proc/loadavg");
  8. preg_match_all("~([0-9]+)~m", $procusage, $procusagearr);
  9. $disks=disk_total_space('../../../home');
  10. $diskfs=disk_free_space('../../../home');
  11. $disku=$disks-$diskfs;
  12. $disks=round(((($disks/1024)/1024)/1024))."Gb ";
  13. $diskfs=round(((($diskfs/1024)/1024)/1024))."Gb ";
  14. $disku=round(((($disku/1024)/1024)/1024))."Gb ";
  15. $memtot=round($memusagearr[1][0]/1024)."Mb ";
  16. $memus=round($memusagearr[1][5]/1024)."Mb ";
  17. $curtime=date("d-m-Y-H-i")." ";
  18. $procusg=$procusagearr[1][1]."%"."\n";
  19. $header="Com1";
  20. $allparam=array($header, $curtime, $disks, $diskfs, $disku, $memtot, $memus, $procusg, $header);
  21. $msg=implode("", $allparam);
  22. $addres='192.168.168.136';
  23. $port='10001';
  24. $socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  25. socket_connect($socket, $addres, $port);
  26. socket_write($socket, $msg);
  27. socket_close($socket);
  28. sleep(30);
  29. }
  30.  
  31. ?>
  32.  
  33.  


Клиент 2:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4. while(true){
  5. $memusage=file_get_contents("../../../proc/meminfo");
  6. preg_match_all("~([0-9]+)~m", $memusage, $memusagearr);
  7. $procusage=file_get_contents("../../../proc/loadavg");
  8. preg_match_all("~([0-9]+)~m", $procusage, $procusagearr);
  9. $disks=disk_total_space('../../../home');
  10. $diskfs=disk_free_space('../../../home');
  11. $disku=$disks-$diskfs;
  12. $disks=round(((($disks/1024)/1024)/1024))."Gb ";
  13. $diskfs=round(((($diskfs/1024)/1024)/1024))."Gb ";
  14. $disku=round(((($disku/1024)/1024)/1024))."Gb ";
  15. $memtot=round($memusagearr[1][0]/1024)."Mb ";
  16. $memus=round($memusagearr[1][5]/1024)."Mb ";
  17. $curtime=date("d-m-Y-H-i")." ";
  18. $procusg=$procusagearr[1][1]."%"."\n";
  19. $header="Com2";
  20. $allparam=array($header, $curtime, $disks, $diskfs, $disku, $memtot, $memus, $procusg, $header);
  21. $msg=implode("", $allparam);
  22. $addres='192.168.168.136';
  23. $port='10001';
  24. $socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  25. socket_connect($socket, $addres, $port);
  26. socket_write($socket, $msg);
  27. socket_close($socket);
  28. sleep(30);
  29. }
  30.  
  31. ?>
  32.  
  33.  



Не пишет ничего ни в 1 из 2-х файлов

(Отредактировано автором: 10 Февраля, 2012 - 13:53:00)



-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
EuGen Администратор
Отправлено: 10 Февраля, 2012 - 13:53:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




nordghost пишет:
$cli1=preg_match("~Com1(.*)Com1~Uis",$buf ,$info);
$cli2=preg_match("~Com2(.*)Com2~Uis",$buf ,$info2);

А откуда берется $info и $info2? Подозреваю, что ниоткуда, стало быть они не совпадают по маске с тем, что обозначено в preg_match и потому ничего не записывается следую условию в if


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
nordghost
Отправлено: 10 Февраля, 2012 - 13:57:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




$info и $info2 создаются вывести их содержимое могу так

выводит без проблем


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
EuGen Администратор
Отправлено: 10 Февраля, 2012 - 13:58:38
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




nordghost
В Вашем скрипте сервера я не вижу где они определяются (выше строк с их использованием нет ничего, что указывало бы на их создание)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
nordghost
Отправлено: 10 Февраля, 2012 - 14:02:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




хм..... ну а как мне тогда её определить чтоб в не же занести данные с компьютера 1 и компьютера2, я думал прег матч создаст её или что...


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
EuGen Администратор
Отправлено: 10 Февраля, 2012 - 14:10:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Откуда он ее создаст?
В скрипте клиента указывайте примерно так: (модифицирую Ваш код, без оптимизаций)
PHP:
скопировать код в буфер обмена
  1. $msg='Computer1:::'.implode("", $allparam);

- для первого клиента
PHP:
скопировать код в буфер обмена
  1. $msg='Computer2:::'.implode("", $allparam);

- для второго клиента
В скрипте сервера:
PHP:
скопировать код в буфер обмена
  1. $rgBuf=explode(':::', socket_read($msgsock, 1024));
  2. $buf=$rgBuf[1];
  3. $sClient=$rgBuf[0];
  4. if($sClient=='Comuter1')
  5. {
  6.    $ofile=fopen('logfiles\log1.txt', 'a');
  7.    fwrite($ofile, $buf);
  8.    fclose($ofile);
  9. }
  10. elseif($sClient=='Comuter2')
  11. {
  12.    $ofile=fopen('logfiles\log2.txt', 'a');
  13.    fwrite($ofile, $buf);
  14.    fclose($ofile);
  15. }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 10 Февраля, 2012 - 14:16:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Есть мнение, что стоит с socket_getpeername поиграться.


-----
PostgreSQL DBA
 
 Top
nordghost
Отправлено: 10 Февраля, 2012 - 14:17:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




ух есть что поразбирать, щас поработаю! спсибо надеюсь сработает! спасибо вам большое!

(Отредактировано автором: 10 Февраля, 2012 - 14:18:35)



-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
EuGen Администратор
Отправлено: 10 Февраля, 2012 - 14:25:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мелкий
Плохо тем, что если это действительно с одной машины несколько клиентов на один порт, то нужно знать удаленный порт, чтобы различить.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 10 Февраля, 2012 - 14:49:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




EuGen, так и не различить их будет с одной машины и знание порта клиента не поможет: ведь каждая следующая итерация клиента будет открывать новый порт. Однако и сам клиент не имеет различий в этом коде для одной машины.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 10 Февраля, 2012 - 15:13:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мелкий
Имелось ввиду если клиентов оговоренное число и сервер знает порт (хотя и в этом случае есть привязка к одной TCP-сессии, согласен).
В общем, проще всего использовать преформатированную строку со служебными полями для однозначного определения клиента. Простейший пример я привел выше.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
nordghost
Отправлено: 10 Февраля, 2012 - 18:22:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Всё работает но возникла проблема, пишет не в папку logfiles а в файл которому даёт имя со слешом logfiles\log2.txt


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
Мелкий Супермодератор
Отправлено: 10 Февраля, 2012 - 20:19:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Сервер тоже никсы, так понимаю? Директории отделяются /, а не \


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB