Perl + PHP + Sockets (Unix)

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Perl + PHP + Sockets (Unix)

Inlägg 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.
Senast redigerad av danielr112 18 oktober 2011, 19:03:21, redigerad totalt 1 gång.
Användarvisningsbild
nablaman
Inlägg: 480
Blev medlem: 30 juli 2010, 17:43:07
Ort: Lund
Kontakt:

Re: Perl + PHP + Sockets (Unix)

Inlägg av nablaman »

Är det inte /tmp/test du ska connnecta till istället för /tmp/Plugwise?
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Perl + PHP + Sockets (Unix)

Inlägg 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.
Larsson90
Inlägg: 646
Blev medlem: 24 december 2008, 21:43:25
Ort: Göteborg

Re: Perl + PHP + Sockets (Unix)

Inlägg av Larsson90 »

Kan du connecta till socketen genom unix kommandon?
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Perl + PHP + Sockets (Unix)

Inlägg av danielr112 »

Vilka Unixkommandon syftar du på då?
Larsson90
Inlägg: 646
Blev medlem: 24 december 2008, 21:43:25
Ort: Göteborg

Re: Perl + PHP + Sockets (Unix)

Inlägg av Larsson90 »

Användarvisningsbild
AndLi
Inlägg: 18566
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Perl + PHP + Sockets (Unix)

Inlägg 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..
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Perl + PHP + Sockets (Unix)

Inlägg 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?
Larsson90
Inlägg: 646
Blev medlem: 24 december 2008, 21:43:25
Ort: Göteborg

Re: Perl + PHP + Sockets (Unix)

Inlägg 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.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Perl + PHP + Sockets (Unix)

Inlägg 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.
Användarvisningsbild
pbgp
Inlägg: 1450
Blev medlem: 11 november 2010, 09:09:22
Ort: Uppsala

Re: Perl + PHP + Sockets (Unix)

Inlägg av pbgp »

har du kollat rättigheterna på socketen. PHP kör väl med egen användare/grupp.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Perl + PHP + Sockets (Unix)

Inlägg 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
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Perl + PHP + Sockets (Unix)

Inlägg 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.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Perl + PHP + Sockets (Unix)

Inlägg 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.
Skriv svar