• 19-02-2015, 21:43:01
    #1
    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>
  • 19-02-2015, 22:49:56
    #2
    Merhaba hocam, while döngüsünün içinde return yaptırdığınız için sadece ilk değeri döndürüp duruyor doğal olarak. Return'u while döngüsünün dışına alır iseniz, sorun düzelecektir.
  • 19-02-2015, 23:09:13
    #3
    ek olarak berliteyim, require işlemi fonksiyon içinde çok kullanışlı değildir, illa orada kullanmanız gerekiyorsa da en azından require_once yazmanız sizin faydanıza olacaktır.
  • 19-02-2015, 23:23:00
    #4
    onurkun adlı üyeden alıntı: mesajı görüntüle
    Merhaba hocam, while döngüsünün içinde return yaptırdığınız için sadece ilk değeri döndürüp duruyor doğal olarak. Return'u while döngüsünün dışına alır iseniz, sorun düzelecektir.
    Yorumunuz için teşekkürler aşağıdaki gibi denedim oldu sayılır ama bir sorun var.

    Bastırdım hepsini yazdı fakat örnek veriyorum

    Sunucu1 - 127.0.0.1 - 1.14 2.10 1.40

    <?php serverName() ." - ". serverIP(); . " - " . Load(); ?>

    şu şekilde 10 sunucu varsa 10 'ununda verisini yeniden çekip çekip alt alta sıralamak istiyorum fakat şu durumdan nasıl toplarım onu düşünüyorum.

    Şuanda tek <li> tagının içine yazıyor hepsini amacım web sayfasının istediğim yerine istediğim değerleri alabilmek yani uptime(); dediğim yere sadece uptime değerlerini yazmak.
    MySQL cümlesini değiştirip tek sütunu çekiyorum fakat bağlantı kısmı patlıyor o kısmı başka fonksiyon oluşturup oraya alıp bu fonksiyonda nasıl kullanabilirim sizce?

    <?php
    function Load($load = "awk '{ print $1\" \" $2\" \" $3 }' /proc/loadavg"){
    	$cikti = array();
    	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"){
    	                            $cikti .= $row['serverName']."<font color=green> ".$data."</font><br>";
    	                        }
    	                        else if($data < "0.20 0.20 0.20"){
    	                            $cikti .= $row['serverName']."<font color=orange> ".$data."</font><br>";
    	                        }
    	                        else{
    	                            $cikti .= $row['serverName']."<font color=red> ".$data."</font><br>";
    	                        }                        
    	                    }
    	                }
    	            }
    	        }
    	        return $cikti;
    	    
    }
    ?>
  • 20-02-2015, 00:32:25
    #5
    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;
    } 
    ?>
  • 20-02-2015, 00:35:34
    #6
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    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;
    } 
    ?>
    O sorunu aşmıştım bir üst mesajda belirttim genede teşekkürler.
  • 20-02-2015, 00:37:34
    #7
    Axerhosting adlı üyeden alıntı: mesajı görüntüle
    O sorunu aşmıştım bir üst mesajda belirttim genede teşekkürler.
    Diziyi string olarak kullandığından sonuç boş dönecektir.

    Verdiğim örneği bi dene istersen ya da

    $cikti = array(); yerine $cikti = ''; olarak değiştirsen aynı sonucu alacaksındır
  • 20-02-2015, 00:41:54
    #8
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    Diziyi string olarak kullandığından sonuç boş dönecektir.

    Verdiğim örneği bi dene istersen
    Tüm verileri döndürdüde sistemin işlevi tam otursun daha iyileştirme yapılacak.