Axerhosting adlı üyeden alıntı: mesajı görüntüle
Merhaba,

Fonksiyon halinde kullanmayınca tablodaki tüm sunuculara komutu yollayıp cevapları alıp ekrana basıyor fakat fonksiyon içine alınıp istenilen html tagının içine çağrılınca sadece ilkini basıyor.

<?php
function Load($load = "awk '{ print $1\" \" $2\" \" $3 }' /proc/loadavg"){
	require('config.php');
		$sql = $db->prepare("SELECT * FROM servers");
	        $sql->execute();
	        while($row=$sql->fetch(PDO::FETCH_ASSOC)) {
	        	
	            if (!function_exists("ssh2_connect")) die("SSH2 fonksiyonu bulunmuyor.");
	            if(!($conn = ssh2_connect($row['serverIP'], $row['serverPort']))){
	                echo "Bağlantıda problem/ler mevcut.\n";
	            } else {
	                if(!ssh2_auth_password($conn, $row['serverUser'], $row['serverPass'])) {
	                    echo "Kimlik doğrulaması başarısız.\n";
	                } else {

	                    if (!($stream = ssh2_exec($conn, $load))) {
	                        echo "Komut gönderilemedi\n";
	                    } else {
	                        stream_set_blocking($stream, true);
	                        $data = "";
	                        while ($buf = fread($stream,4096)) {
	                            $data .= $buf;
	                        }
	                        fclose($stream);
	                        if($data < "0.10 0.10 0.10"){
	                            return $row['serverName']."<font color=green> ".$data."</font><br>";
	                        }
	                        else if($data < "0.20 0.20 0.20"){
	                            return $row['serverName']."<font color=orange> ".$data."</font><br>";
	                        }
	                        else{
	                            return $row['serverName']."<font color=red> ".$data."</font><br>";
	                        }                        
	                    }
	                }
	            }
	        }    
}
?>
Örnek kullanım :
<li><?php echo Load(); ?></li>

Sadece ilkini göstermesi normal. Çünkü fonksiyonlarda return komutu o işlemden geri dönen sonuç için yapılmıştır.


Birde aşağıdaki şekilde dene istersen.

<?php 
function Load($load = "awk '{ print $1\" \" $2\" \" $3 }' /proc/loadavg"){ 
    require('config.php');
	$tmpStr = '';
        $sql = $db->prepare("SELECT * FROM servers"); 
            $sql->execute(); 
            while($row=$sql->fetch(PDO::FETCH_ASSOC)) { 
                 
                if (!function_exists("ssh2_connect")) die("SSH2 fonksiyonu bulunmuyor."); 
                if(!($conn = ssh2_connect($row['serverIP'], $row['serverPort']))){ 
                    echo "Bağlantıda problem/ler mevcut.\n"; 
                } else { 
                    if(!ssh2_auth_password($conn, $row['serverUser'], $row['serverPass'])) { 
                        echo "Kimlik doğrulaması başarısız.\n"; 
                    } else { 

                        if (!($stream = ssh2_exec($conn, $load))) { 
                            echo "Komut gönderilemedi\n"; 
                        } else { 
                            stream_set_blocking($stream, true); 
                            $data = ""; 
                            while ($buf = fread($stream,4096)) { 
                                $data .= $buf; 
                            } 
                            fclose($stream); 
                            if($data < "0.10 0.10 0.10"){ 
                                $tmpStr .= $row['serverName']."<font color=green> ".$data."</font><br>"; 
                            } 
                            else if($data < "0.20 0.20 0.20"){ 
                                $tmpStr .= $row['serverName']."<font color=orange> ".$data."</font><br>"; 
                            } 
                            else{ 
                                $tmpStr .= $row['serverName']."<font color=red> ".$data."</font><br>"; 
                            }                         
                        } 
                    } 
                } 
            }
	return $tmpStr;
} 
?>