Welcome to WebmasterWorld Guest from 54.160.177.33

Forum Moderators: coopster & jatar k

Message Too Old, No Replies

Use of fsocketopen function to check system status.

shell_exec, fsockopen, system online/offline

     
10:52 am on Jun 18, 2008 (gmt 0)

New User

5+ Year Member

joined:May 14, 2007
posts: 20
votes: 0


Dear All!

I have a small problem. I want to write a PHP Application that will run on server and will check weather the compter systems in its network are online/offline.

I have acheived the desired result using ping cammand
shell_exec("ping -r -c 1 -W 1 $ip");

It works fine but is a bit slow.

I was looking at various options and found this PHP function fsockopen(). I wanted to know waether it could help me in achieving what i want. Is this a right option for doing such thing?

I have seen few tutorials but still am confused. Could not understood it properly. Can anyone help how to use it?

Thanks in Advance

Best,
Qasim

1:21 pm on June 18, 2008 (gmt 0)

Preferred Member

10+ Year Member

joined:Sept 28, 2002
posts:505
votes: 0


Hi Qasim,

the main difference to ping is that `ping` is using the ICMP protocol, while fsockopen() does not but can do TCP or UDP connects.

So, using fsockopen(), you may connect to a server port and test a service - which is even better than a ping, as a ping shows that the TCP/IP stack of the target is basically working, while a service connect explicitly shows if a specific service is working, or is dead.

Manual and examples here:
[php.net...]

Kind regards,
R.

3:35 am on June 19, 2008 (gmt 0)

New User

5+ Year Member

joined:May 14, 2007
posts: 20
votes: 0


Hi Romeo!

Thanks a lot. Thats great. In my case since i need to check weather a system is online/offline, what service should i check using fsockopen(). It will be great if u provide a small example.

Best,
Qasim

12:57 pm on June 19, 2008 (gmt 0)

Preferred Member

10+ Year Member

joined:Sept 28, 2002
posts:505
votes: 0


Qasim,

the link to php.net has a lot of examples to check a webserver or connect to a mail server.

You will learn a lot by trying some of these examples.

If you would like to test the pure connectivity only and not communicate with the service at such, it may perhaps be sufficient to just look at the status of the fsockopen to decide if a service is connectable:
$fp = fsockopen(.....);
if (!$fp) { # no connect!
....
}

Good luck and
kind regards,
R.

4:53 am on June 27, 2008 (gmt 0)

New User

5+ Year Member

joined:May 14, 2007
posts:20
votes: 0


Thanks Romeo!