Command line problem

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
black187
Forum Newbie
Posts: 5
Joined: Thu Mar 23, 2006 4:17 am

Command line problem

Post by black187 »

Hello, I'm running my code from the command line (php Command_line.php), and when the code is finished the program does not return to console (I tried exit function but no success).

Code: Select all

<?php

mysql_connect("localhost", "iskratel_ip","diploma") or die ("Povezave z zbirko podatkov ni mogo&#269;e ustvariti");
mysql_select_db("iskratel");

$res = mysql_query("SELECT MAX(id) from ip_adress")or die(mysql_error()); //izberemo zadnji id iz tabele ip_adress
        $zadnji = mysql_fetch_row($res); // zadnji id zapišemo v spremenljivko $zadnji
//     echo "<BR>$zadnji[0]"; //izpišemo $zadnji
mysql_close;


// Timeout - ker ping dolgo &#269;asa deluje, mora biti nastavljen dolg timeout  
//set_time_limit(3600);

// priklju&#269;itev na database v mysql
mysql_connect("localhost", "iskratel_ip","diploma") or die ("Povezave z zbirko podatkov ni mogo&#269;e ustvariti");
mysql_select_db("iskratel");

// for zanka, ki šteje od 1 do 256 (število ip-jev 0 do 255)
for ($i=1;$i<=$zadnji[0];$i++){
  
// izberemo iz Mysql tabelo ip, kjer je id tabele spremenjlivka dolo&#269;ena v for zanki
$result = mysql_query("SELECT ip FROM ip_adress WHERE id=$i") or die(mysql_error()); 

// shranimo razultat v spremenljivko row ter naredimo while zanko
while($row=mysql_fetch_array($result))
{
  // izvrši se ping (ki je nastavljen za linux, pri Windowsih so drugi parametri)
  exec("ping -c1 -w1 $row[0] ", $output, $return); // Pinga "row" - izbrani stolpec ip ([0])
  
  // &#269;e nam ping vrne 0 (ko pinga se ti izpisujejo rezultati, &#269;e rezultata ni se izpiše 0)
if ($return === 0) {
  
  // if pogoj je izpolnjen zato v ping1 pove&#269;a vrednost za 1 (ping1 - dnevni ping - 3x na dan)
mysql_query("UPDATE ip_adress SET ping1=ping1+1 WHERE id=$i") or die("Napaka pri vnosu:<br />" .mysql_error());

// izpiše razultate
  echo "$row[0] -  ";
  echo "USPEH"; 


} else {
  echo "$row[0] -  ";
  echo "NAPAKA";

} 
  }
}

// zapremo mysql bazo
mysql_close;

//
//
//set_time_limit(3600);
mysql_connect("localhost", "iskratel_ip","diploma") or die ("Povezave z zbirko podatkov ni mogo&#269;e ustvariti");
mysql_select_db("iskratel");

for ($i=1;$i<=$zadnji[0];$i++){  
  
  //v ping2 vpišemo 0 &#269;e je v ping1 0, v ping2 vpišemo 2, &#269;e je v ping1 vrednost ve&#269; kot 1
mysql_query("UPDATE ip_adress SET ping2='0' WHERE ping1=0") or die(mysql_error()); 
mysql_query("UPDATE ip_adress SET ping2='1' WHERE ping1>0") or die(mysql_error());
}
mysql_close;

exit(0);

?>
This program pings about 5000 computers (it works for about 1 hour).
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

Just something I noticed - you have at least one consistent error - perhaps more :)

Code: Select all

mysql_close;
should be

Code: Select all

mysql_close();
black187
Forum Newbie
Posts: 5
Joined: Thu Mar 23, 2006 4:17 am

Post by black187 »

I fixed it :oops:

But still I can't get it to work. It looks like PHP does a timeout, can I do anything about it?
User avatar
Burrito
Spockulator
Posts: 4715
Joined: Wed Feb 04, 2004 8:15 pm
Location: Eden, Utah

Post by Burrito »

If it is timing out, and you're sure that's the problem, you can tell php to never time out using:

Code: Select all

set_time_limit(0);
black187
Forum Newbie
Posts: 5
Joined: Thu Mar 23, 2006 4:17 am

Post by black187 »

I don't know for sure. But my gut feeling tells me it's timeout :)

The strange thing is, that the script works in web browser, but in command line, at the end of the script everything stops. It's like when it finishes, it blockes itself.
Post Reply