Many parts of this script were found at the following site: http://www.sitepoint.com/article/udp-portscanning-php This script isn't totally mine. I've just adapted it to my needs and it is working quite well, telling me when a service is up or down ... read the article for further details. Anyway, my question was about concurrent script running. My script is working the way I needed it to and all I need now is a way to fasten it. I still think it's a little bit slow by many aspects, maybe because I'm not a programmer and I've written a code that is not so good or fast, or there is no way to have all my servers services checked in parallel. Thanks in advance. Felipe Martins On 5/30/06, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote:
Phil Martin wrote: > Sure, sorry about that. I have a function that tells me if the host is DOWN > or UP. I want to run this function in parallel for each host I monitor. The > function is the following: > > function servstatus($remote_ip, $remote_ip_port, $remote_ip_proto) { > > if ($remote_ip_proto == "tcp") { > $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); > > // Turning Off Warning Messages > $i_error_old=error_reporting(); > error_reporting($i_error_old & ~ (E_WARNING)); > > if ($connect = socket_connect($socket, "$remote_ip", "" . > $remote_ip_port . "")) { > return true; the following 3 statements will never be run. > socket_set_block($socket); > socket_close($socket); > unset($connect); > } else { > return false; the following 3 statements will never be run. > socket_set_nonblock($socket); > socket_close($socket); > unset($connect);} my guess is you know even less about sockets, especially blocking/non-blocking than I do! > > } else { why are you making the distinction between udp and tcp in this way? > > // Turning off Warning Messages > $i_error_old=error_reporting(); > error_reporting($i_error_old & ~ (E_WARNING)); > > $socket = fsockopen("udp://$remote_ip", "$remote_ip_port", &$errno, > &$errstr, 2); > $timeout = 1; > > if (!$socket) { if you don't get the socket why does that mean the service is up? > return true; > } > > socket_set_timeout ($socket, $timeout); > $write = fwrite($socket,"\x00"); > if (!$write) { again if you can't write why does that mean the service is up? > return true; > } > > $startTime = time(); > $header = fread($socket, 1); > $endTime = time(); > $timeDiff = $endTime - $startTime; > > if ($timeDiff >= $timeout) { why does a time measurement mean the service is up? > fclose($socket); > return true; > } else { > fclose($socket); > return false; > } > } > } > > > Thanks in advance > > Felipe Martins > > On 5/30/06, Dave Goodchild <buddhamagnet@xxxxxxxxx> wrote: > >> >> >> >> On 30/05/06, Phil Martin <darkinner.lists@xxxxxxxxx> wrote: >> > >> > Hi everyone, >> > >> > I've made a very basic and small function to suit my needs in >> > monitoring some hosts services. I've noticed that the script is a >> little >> > bit >> > slow because of the number of hosts and services to monitor. Is there a >> > way >> > to execute my function servstatus(); in parallel with every hosts to >> > increase the speed ? >> > Thanks in advance. >> > >> > []'s >> > Felipe Martins >> > >> > >> Can you show us the function? >> >> -- >> http://www.web-buddha.co.uk >> >> dynamic web programming from Reigate, Surrey UK (php, mysql, xhtml, css) >> >> look out for project karma, our new venture, coming soon! >> >