[php] snmpget probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DRaakje
  • Registratie: Februari 2000
  • Niet online
Ik heb een scrript dat 24h per dag moet draaien. Nou leest dit script elke 30 seconden bepaalde dingen uit een device. Probleem is dat snmpget na elke lees actie de socket niet sluit. Na een half dagje krijg ik dan ook de error:

Warning: snmpget(): Could not open snmp connection: Invalid local port in...

Als ik het script opnieuw start is het probleem weg. Dus dan sluit ie de sockets wel.
Nou heb ik dit al gemeld bij php. En het met zo een beetje elke versie geprobeerd. Alleen geen verschil. Nu vroeg ik mij af heeft iemand een idee hoe ik dit het beste kan omzeilen?

zelf zat ik te denken in de vorm van een apart script met daarin:

PHP:
1
2
3
4
5
<?php
while(TRUE){
exec("php.exe ..\www\script.php");
}
?>


Zijn er nog elegantere oplossingen?

[ Voor 8% gewijzigd door DRaakje op 23-03-2004 23:09 ]


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Hoe heb je dat script nu draaien?

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • DRaakje
  • Registratie: Februari 2000
  • Niet online
PHP:
1
2
3
4
while(TRUE){
$bla = snmpget($ip, $key, $id);
sleep(30);
}

Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Je kunt het script natuurlijk ook zo maken dat er gebruik wordt gemaakt van crontab/geplande taken en dan het looptje uit het script halen.
Op die manier wordt de socket wel gesloten en kun je toch nog elke X seconden de info ophalen.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • DRaakje
  • Registratie: Februari 2000
  • Niet online
Dat heb ik ook al overwogen, maar ik wil het liefst iets bouwen dat op beide systemen even goed werkt!

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Het is in ieder geval een bekend probleem:
It seems that for each snmpget() its own socket() will be opened. This is not closed after snmpget() finishes. Neither existing sockets are reused by subsequent snmpget() calls.

When querying a few switches with lots of ports the maximum file descriptor count of Apache is exhausted. Thus no more snmpget() are possible. Additionaly no more files can be read by this particular Apache process. Neither the PHP file, any include files nor any other files (like a .css file, ...).
Onder welke webserver draai je PHP :?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • DRaakje
  • Registratie: Februari 2000
  • Niet online
ik maak gebruik van de command line versie. Dus zonder server oid

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

DRaakje schreef op 24 maart 2004 @ 12:07:
ik maak gebruik van de command line versie. Dus zonder server oid
Dan zou ik inderdaad gaan voor het voorstel wat je bovenaan al post; met een exec binnen een repeterend script. Dat biedt opzicht weinig nadelen :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate

Pagina: 1