Sida 1 av 1

Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 18:14:58
av danielr112
Jag har ett problem som jag fan inte lyckas lösa. Jag måste ha missat nåt.

Jag har en logger i perl. Den snappar upp massa saker från mitt övervaknngsnät och loggar detta sedan till en socket på disk för att jag vill parsa datan i php. Ja det är dumt att köra flera språk blandat men det är så det blivit och får vara tills jag är klar.

Dvs

Perl Skapar socket på disk.
Php scriptet ska läsa denna socketen.

Så här ser koden ut i Perl:

Kod: Markera allt

use IO::Socket;
socket(SERVER, PF_UNIX, SOCK_STREAM, 0);
unlink "/tmp/Plugwise"; bind(SERVER, sockaddr_un("/tmp/test")) or die "Can't create server: $!";
print SERVER "Hej\n";
Socketen har ju skapats på disk och den ser bra ut? Vet inte hundra hur jag kollar den annars.

Sedan försöker jag läsa den i php med:

Kod: Markera allt

 <?php
 
  echo "starting\n";
 
  $s = stream_socket_client('unix:///tmp/test',$errno, $errstr);
          #$s = fsockopen ("/tmp/Plugwise",0,$errno, $errstr);
  if (!$s) {
              echo "$errstr ($errno)<br />\n";
  } else {
  while (1==1) {
          echo stream_socket_recvfrom($s, 1024)."\n";
  }
  }
Men phpn säger då bara:
PHP Warning: stream_socket_client(): unable to connect to unix:///tmp/Plugwise (Connection refused) in /root/duo/plug.php on line 5
Connection refused (111)<br />

Jag har provat flera olika sätt i php men får de inte att funka. Någon som har tips? Jag måste ha missat nåt fundamentalt men kan inte hitta det. Drar mig för att fråga men jag har suttit för länge nu.

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 18:40:43
av nablaman
Är det inte /tmp/test du ska connnecta till istället för /tmp/Plugwise?

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 19:03:51
av danielr112
Copy paste error här bara. Har plockat ut de vitala delarna och gjorde fel här. Kör dock rätt på maskinen.

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 19:15:07
av Larsson90
Kan du connecta till socketen genom unix kommandon?

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 19:26:17
av danielr112
Vilka Unixkommandon syftar du på då?

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 19:44:46
av Larsson90

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 19:46:30
av AndLi
Jag måste missa något här, det du säger är alltså att du skriver ner en socket till en fil och därefter avslutar perl delen.
Vid ett annat tillfälle läser du upp socketn med PHP?

Jag trodde det funkade som så att filen(eller socketen) på disken (i filsystemet) bara funka som en koppling mellan de två och inte lagrade någon data. Att både Perl & PHP delen måste snurra samtidigt för att kunna utbyta någon data..

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 20:08:48
av danielr112
Båda snurrar hela tiden. Men la ner detta och gick tillbaks och fortsätter köra med udp eller tcp sockets. Det funkar mellan dem utan problem.

Larsson90. socket är väl bara för INET sockets och inte UNIX sockets?

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 21:28:56
av Larsson90
Har du slängt på error-reporting?

Kod: Markera allt

$sock = fsockopen('unix:///full/path/to/my/socket.sock', NULL, $errno, $errstr);

fwrite($sock, 'SOME COMMAND'."\r\n");

echo fread($sock, 4096)."\n";

fclose($sock);
Det där borde fungerar annars.

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 22:48:44
av danielr112
Hej

Den funkar inte nej. Har testat det med:

PHP Warning: fsockopen(): unable to connect to unix:///tmp/test:0 (Connection refused) in /root/duo/plug.php on line 6
Connection refused (111)<br />

Samma fel fast den tar med 0an för porten. Men som sagt kör med en udp länk istället. det räcker det med för mitt ändamål.

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 22:54:37
av pbgp
har du kollat rättigheterna på socketen. PHP kör väl med egen användare/grupp.

Re: Perl + PHP + Sockets (Unix)

Postat: 18 oktober 2011, 22:56:43
av danielr112
Den har samma rättigheter som Telldus socketen som ligger jämte och den kan jag läsa av. Jag kör den dessutom som root.

Har även provat sätta 777 o.s.v :)
Känns lite som om Perl låser upp socketen. Men har försökt traca o.s.v men inte kommit nån vart så det får vara nu. Har laft ner för många timmar redan på det :D

Re: Perl + PHP + Sockets (Unix)

Postat: 19 oktober 2011, 03:18:17
av labmaster
Du är i gott sällskap ty jag har heller aldrig fått en filsocket att funka mellan perl och php. TCP- eller UDP-socket förefaller vara bästa lösningen. Jag brukar föredra TCP-socket framför UDP dito.

Re: Perl + PHP + Sockets (Unix)

Postat: 19 oktober 2011, 15:07:18
av danielr112
Ok. då är jag inte ensam. Suttit i mer än 2 dar. Och har aldrig råkat ut för det tidigare mellan andra språk. Orsaken att jag tog UDP var att det inte spelar någon roll i vilken ordning man startar programmen på. Dvs dör ett av dem så är det bara att starta upp igen så fortsätter allt som normalt.