Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 20-11-2015, 11:52
Evolution48
 Registrierter Benutzer
Links : Onlinestatus : Evolution48 ist offline
Registriert seit: Mar 2015
Beiträge: 2
Evolution48 befindet sich auf einem aufstrebenden Ast
Question vorgegebene Daten in mehrdimensionales Array speichern

tag auch leute das ist denke ich mal meine erste Frage in diesem Forum und hoffe die Community kann mir helfen, auch ich beantworte gerne mal fragen

es geht darum das ich eine rangliste erstellen will - einer Top 10 - die werte in der rangliste kommen von log files auf meinem vserver - auf meinem server sind nähmlich einige domains als logiles - also domain.de.log - und in den log files sind verschiedene daten wie welche IP hat die domain besucht, wann, woher, welcher browser, wie viel bytes und andere - das ist aber eher nebensächlich

jetzt habe ich mit dem befehl shell_exec mir die daten rausgezogen die ich brauche - für die rangliste brauche ich die IP's, Bytes und das Datum vom letzten zugriff. Das datum lasse ich aber jetzt erstmal weg

so jetzt habe ich die IPs und mir daraus eine Top 10 gebastelt - also nach dem holen der Ips und in ein array speichern, habe ich so die Top 10 erstellt:

PHP-Code:
$all_ips array_count_values($ip_array);
        
arsort($all_ips);
        
$keys array_keys($all_ips);
        
$topTenIp = array();
        for (
$i 0$i <= 9$i++) {
            
$topTenIp[] = $keys[$i];
        } 
und jetzt komm ich zu dem problem wo ich etwas fest sitze..

in der variable topTenIp sind nun 10 Ips als array gespeichert - den einzelnen IP's will ich jetzt aber auch den Bytes zuordnen

Die sache ist das IP xyz in der logfile z.B auch gerne mal 40 mal vorkommt aber immer ne andere byte anzahl hat - also will ich alle bytes DIESER Ip haben und halt mit der IP ausgeben lassen

mein problem ist aber wie ich für jede IP die bytes kriege die halt der selben IP gehören.. und das halt für alle 10 verschiedenen IP's

PHP-Code:
        foreach ($topTenIp as $val) {
                
$bytes_ips shell_exec("grep $val | awk '{print $10}' /var/www/laravel/logs/vhosts/zahnmedizinisches-fachzentrum-berlin.de.log");
            } 
das hier ist ein Lösungsansatz von mir allerdings zieht er (wie gewollt) alle bytes für jede IP in $val raus - allerdings gibt mir die variable $bytes_ips jetzt einfach alle bytes zu jeder IP - aber halt alle zusammen - also ein ganz langer string mit ganz vielen byte zahlen

ich will die ausgabe aber ungefähr so haben:

PHP-Code:
[0] => IP.xxx.xxx => [0] => bytes => [1] => bytes ........
[
1] => andereIP.xxx.xxx => [0] => bytes => [1bytes ...... 
[
2] => andereIP.xxx.xxx => [0] => bytes => [1bytes ...... 
und so weiter - ich habe ehrlich gesagt aber keinen weiteren Lösungsansatz wie ich das bewerkstelligen soll

Mfg - ich hoffe ihr könnt mir helfen
Mit Zitat antworten