Zum Inhalt springen

Unique86

Mitglieder
  • Gesamte Inhalte

    50
  • Benutzer seit

  • Letzter Besuch

Beiträge von Unique86

  1. In PHP gilt die folgende Regel:

    Abstrakte Klassen, die von Abstrakten Klassen erben, müssen die Member der Vaterklasse überschreiben, und nicht Überladen.

    Da Interfaces in PHP "Under the Hood" abstrakte Klassen sind, müsste Deine Implementierung des Interfaces so aussehen (nicht getestet !):

    abstract class BaseDatabaseConnector implements IDatabaseConnector
    
    {
    
        protected $_isConnected = false;
    
        protected $_connection = null;
    
    
        [B]abstract public function openConnection();
    
        abstract public function closeConnection();[/B]
    
    
        public function getConnection()
    
        {
    
            return $this->_connection;
    
        }
    
    
        public function isConnected()
    
        {
    
            return $this->_isConnected;
    
        }
    
    }  

    Hallo,

    erstmal vielen Dank für Deine Antwort.

    Mir ist die Nacht dieses Thema über den Weg gelaufen, in der die gleiche Thematik besprochen wird: PHP Bugs: #41145: Interface, Abstract Class & Methods

    Ist wohl bekannt aber wird wohl nie geändert werden.

    Hab mir nen work-around gebastelt - das Thema kann als gegenstandslos betrachtet werden. Danke ....

    Gruß Sven

  2. Hallo Zusammen,

    ich hab nen Problem mit dem OOP Model in der PHP Version 5.2.4.

    Ich bin z.Z. dabei ein Framework zu entwicklen uns stoße nach der Konzeption meines Objektmodels auf Probleme bei der Realisierung.

    Es geht primär um ein Paket das sich um die Datenbankverbindung kümmert.

    Hierzu habe ich, um möglichst Datenbankunabhängig zu bleiben, ein Interface, eine abstrakte Klasse und zur Zeit zwei konkrete Klassen entwickelt.

    Ich habe die Kommentare der übersichthalber rausgenommen.

    Das Interface

    IDatabaseConnector.class.php


    interface IDatabaseConnector
    {
    public function openConnection();
    public function closeConnection();
    public function getConnection();
    public function isConnected();
    }
    [/php]

    Die Basisklasse (abstrakte Klasse), die das Interface implementiert

    BaseDatabaseConnector.class.php

    [php]
    abstract class BaseDatabaseConnector implements IDatabaseConnector
    {
    protected $_isConnected = false;
    protected $_connection = null;

    abstract protected function openConnection();
    abstract protected function closeConnection();

    public function getConnection()
    {
    return $this->_connection;
    }

    public function isConnected()
    {
    return $this->_isConnected;
    }
    }

    Und zu guter Letzt, die konkrete Klasse für die Verbindung zu einer MySQL Datenbank.

    Ich habe die zweite Klasse für die Verbindung zur PostGres mal ausgelassen.

    Sie erbt von der Basisklasse

    MySQLConnector.class.php


    class MySQLConnector extends BaseDatabaseConnector
    {
    public function openConnection()
    {
    // doit
    }

    public function closeConnection()
    {
    // doit
    }
    }
    [/php]

    Die Methoden sind natürlich implementiert und beinhalten die dementsprechende Logik.

    Jetzt bekomme ich während des Interpretiervorgangs folgende Fehlermeldung beim debuggen ...

    Kompilierungsfehler: [...]\source\de\svenbartak\database\BaseDatabaseConnector.class.php Zeile 49 - Can't inherit abstract function IDatabaseConnector::openConnection() (previously declared abstract in BaseDatabaseConnector)
    Zeile 49 - ist die Definition der Basisklasse: abstract class BaseDatabaseConnector implements IDatabaseConnector

    Jetzt meine Fragen:

    1) Wie kommt dieser Fehler zustande?

    2) Wenn das so nicht funktion, wie kann man es dann realisieren?

    Dazu sei gesagt das ich sehr Fit im objektorientierten Bereich bin und auch die Prinzipien verstehe.

    Des weiteren sei gesagt das, dass o.g. Beispiel so wie es da steht, portiert in Java, funktioniert.

    Bitte keine Verweise auf PEAR o. ähnliche Extensions ...

    Vielen Dank und ich hoffe es kann mir jemand helfen ...

    Gruß Sven

  3. das ist lieb, nur wie gesagt, gelesen habe ich schon viel..

    ich brauch nen ansenliches (ausführbares) beispiel....

    bin dann nen bissl komplziert, verstehe das dann einfach besser

    aber trotzdem danke schön

    Hi,

    da ist doch nen ausführliches und kommentiertes Beispiel, sogar Hello World, dabei !

    Gruß Sven

  4. Hallo zusammen,

    ich habe auch mal eine Frage zur Gehaltsvorstellung.

    Bin nun auch fast fertig mit meiner Ausbildung zum Fachinformatiker AE und gehe noch nebenbei einem FernUni Studium (Informatik) nach.

    Aber hier erstmal mein Profil.

    Alter

    21

    Wohnort

    Holzwickede

    letzter Ausbildungsabschluss (als was und wann)

    - staatlich geprüfter Info. Technischer Assistent (3 Jahre) FHR

    Berufserfahrung

    - inkl. Ausbildungszeit 3,5 Jahre (halbes Jahr Praktikum ITA s.o. / 3 Jahre FIAE)

    Vorbildung

    - staatlich geprüfter Info. Technischer Assistent (3 Jahre) FHR

    Arbeitsort

    Herdecke

    Grösse der Firma

    52 Mitarbeiter am Standort - insgesammt rund 400 Mitarbeiter

    Tarif

    ?

    Branche der Firma

    Softwareentwicklung / Softwaremanagement

    Arbeitsstunden pro Woche

    40

    Gesamtjahresbrutto

    ~ 10.000 Brutto (Ausbildungsgehalt drittes Lehrjahr)

    Anzahl der Monatsgehälter

    12

    Anzahl der Urlaubstage

    27

    Sonder- / Sozialleistungen

    Beteiligungen je nach Gewinn

    Tätigkeiten (Aufgaben/Aufgabenbereich)

    • Softwareentwicklung Java
    • Softwareentwicklung .NET
    • Projektplanung

    Hoffe ihr könnt mir da helfen ... will auch nicht am Anfang zu hoch pokern ...

    Gruss

  5. Als ich mal Probleme mit der Auslastung meines Root Servers hatte , half ein Wechsel vom Apache zu Lighttpd. Allerdings war bei mir das Problem nicht in den Skripten selber begründet sondern in der Menge der Zugriffe. Da bei dir ja nur einzelne Seiten Probleme machen würde ich sagen überprüfe als erstes deine Indizes sowie die jeweiligen Skripte.

    Auch den schnellsten Server bekommt man mit schlechtem Coding ganz schnell in die Knie.

    Hallo,

    ja genau das war mein Problem, habe den Sourcecode und die Abfragen um ca. 50% minimieren können. Zudem sind einige Abfragen

    SELECT * FROM
    durch
    SELECT id FROM

    ersetzt worden. Die Ladezeiten haben sich drastisch verringert. Vielen Dank für den Tip

    Gruß´Sven

  6. Hallo,

    neben den veralteten Ständen der Dienste, ist mir auch immer aufgefallen, falls eigene Scripte laufen, dass hier z.B. SQL Statements häufig sehr unperformant formuliert werden:

    • "select * from" wenn nur ein Feld verwendet wird
    • $result = select * from
      while (..)
      select * from tabelle where a = $result[feld]
    • Blobs werden innerhalb der Datenbank abgelegt

    Bitte wirklich mal schauen, wo zuviel Zeit für die Ausführung verloren geht. Oft sind es nicht die Konfigurationen, sondern die eigene Programmierung.

    HTH Phil

    Hallo Phil,

    daran habe ich auch schon gedacht, weil andere Seiten wesentlich schneller laufen, die auf dem selben Server liegen.

    Gruß Sven

  7. schaut soweit ja nicht schlecht aus - allerdings ist dein MySQL-release über 2 1/2 jahre alt. sprechen gründe gegen ein upgrade auf 4.1.22?

    du kannst dem MySQL-server angeben, dass long queries geloggt werden - das steht auch im tuning primer drin.

    ist der MySQL direkt in den apachen eingebunden oder läuft das über ein apache-modul wie z.b. PHP? welche version vom apachen setzt du ein?

    s'Amstel

    Hallo Amstel,

    erstmal vielen Dank für die Antwort auf diese Thematik.

    Grundsätzlich spricht nichts gegen ein Upgrade auf eine neueres MySQL Release, sofern alles weiterhin funktioniert.

    Soweit ich weiß, ist der MySQL direkt in den Apache eingebunden (habe den Rootserver übernommen) wo finde ich dementsprechende Informationen?

    Die Version des Apache 2.0.54 ...

  8. Hallo zusammen,

    ich brauche mal hilfe ... ich habe nen relativ schmalen Rootserver und möchte diesen effektiver nutzen. Zur Zeit brauchen div. Seiten ca. 50 Sekunden zum laden und das ist schlicht weg nicht akzeptabel.

    Hier die Daten des Servers:

    • AMD Athlon64 3200+
    • 1024 MB RAM
    • 2 x 80 GB

    Ich habe mal den MySQL Performance Tuning Primer durchlaufen lassen, dieser spukt mir folgendes aus.

    -- MYSQL PERFORMANCE TUNING PRIMER --

    - By: Matthew Montgomery -

    MySQL Version 4.1.13 x86_64

    Uptime = 5 days 1 hrs 25 min 29 sec

    Avg. qps = 12

    Total Questions = 5381333

    Threads Connected = 20

    Server has been running for over 48hrs.

    It should be safe to follow these recommendations

    To find out more information on how each of these

    runtime variables effects performance visit:

    MySQL AB :: MySQL 3.23, 4.0, 4.1 Reference Manual :: 5.2.3 System Variables

    Visit MySQL AB :: MySQL Enterprise Advisors

    for info about MySQL's Enterprise Monitoring and Advisory Service

    SLOW QUERIES

    Current long_query_time = 10 sec.

    You have 4692 out of 5381439 that take longer than 10 sec. to complete

    The slow query log is NOT enabled.

    Your long_query_time may be too high, I typically set this under 5 sec.

    WORKER THREADS

    Current thread_cache_size = 0

    Current threads_cached = 0

    Current threads_per_sec = 1

    Historic threads_per_sec = 0

    Your thread_cache_size is fine

    MAX CONNECTIONS

    Current max_connections = 100

    Current threads_connected = 20

    Historic max_used_connections = 51

    The number of used connections is 51% of the configured maximum.

    Your max_connections variable seems to be fine.

    MEMORY USAGE

    Max Memory Ever Allocated : 105 M

    Configured Max Per-thread Buffers : 155 M

    Configured Max Global Buffers : 26 M

    Configured Max Memory Limit : 181 M

    Physical Memory : 1000.81 M

    Max memory limit seem to be within acceptable norms

    KEY BUFFER

    Current MyISAM index space = 34 M

    Current key_buffer_size = 16 M

    Key cache miss rate is 1 : 4326

    Key buffer fill ratio = 4.00 %

    Your key_buffer_size seems to be too high.

    Perhaps you can use these resources elsewhere

    QUERY CACHE

    Query cache is supported but not enabled

    Perhaps you should set the query_cache_size

    SORT OPERATIONS

    Current sort_buffer_size = 512 K

    Current record/read_rnd_buffer_size = 508 K

    Sort buffer seems to be fine

    JOINS

    Current join_buffer_size = 132.00 K

    You have had 14143 queries where a join could not use an index properly

    You should enable "log-queries-not-using-indexes"

    Then look for non indexed joins in the slow query log.

    If you are unable to optimize your queries you may want to increase your

    join_buffer_size to accommodate larger joins in one pass.

    Note! This script will still suggest raising the join_buffer_size when

    ANY joins not using indexes are found.

    OPEN FILES LIMIT

    Current open_files_limit = 1024 files

    The open_files_limit should typically be set to at least 2x-3x

    that of table_cache if you have heavy MyISAM usage.

    Your open_files_limit value seems to be fine

    TABLE CACHE

    Current table_cache value = 64 tables

    You have a total of 1227 tables

    You have 64 open tables.

    Current table_cache hit rate is 0%, while 100% of your table cache is in use

    You should probably increase your table_cache

    TEMP TABLES

    Current max_heap_table_size = 16 M

    Current tmp_table_size = 32 M

    Of 130989 temp tables, 1% were created on disk

    Effective in-memory tmp_table_size is limited to max_heap_table_size.

    Created disk tmp tables ratio seems fine

    TABLE SCANS

    Current read_buffer_size = 252 K

    Current table scan ratio = 752 : 1

    read_buffer_size seems to be fine

    TABLE LOCKING

    Current Lock Wait ratio = 1 : 1126

    You may benefit from selective use of InnoDB.

    If you have long running SELECT's against MyISAM tables and perform

    frequent updates consider setting 'low_priority_updates=1'

    Dahingehend würde ich gerne wissen, was für meine Maschine so die "optimalen" Werte wären. Das selbe für den Apache ...

    Über eine Antwort würde ich mich sehr freuen

    Gruß Sven

  9. Hi,

    schau mal hier : SELFHTML: JavaScript / Objektreferenz / window

    Da wirst Du fündig ...

    Beachten Sie:

    Unter Opera, Konqueror und Safari können Sie die Eigenschaft innerHeight nur auslesen, jedoch nicht setzen.

    Im Internet Explorer können Sie mit document.body.clientHeight die innere Fensterhöhe bestimmen. Wenn Sie eine Seite Dokumenttyp-Deklaration einsetzen, die im Internet Explorer 6 den Seite standardkonformen Modus auslöst, müssen Sie document.documentElement.clientHeight statt document.body.clientHeight verwenden. Zu diesem Zeitpunkt muss jedoch das body- bzw. html-Element bereits vorhanden sein, d.h. es ist sinnvoll, die Ermittlung dieser Eigenschaften vom Event-Handler Seite onload abhängig zu machen.

    Ein fertiges Script zum Auslesen der Größe des Anzeigebereichs des Fensters, das alle Browser und Anzeigemodi berücksichtigt, finden Sie auf englischsprachige Seite quirksmode.org.

    Gruß Sven

  10. Habs jetzt mit folgender Methode gelöst

    
    private void setAttributeTableData(Vector vector, int breakPoint)
    
      {
    
        int row    = 0;
    
        int column = 0;
    
    
        tblModAttributes.setRowCount(vector.size() / breakPoint);
    
    
        for(int i=0; i<vector.size(); i++)
    
        {  
    
          tblModAttributes.setValueAt(vector.get(i),row,column);
    
          column++;
    
    
          if(i%breakPoint-1 == 0)
    
          {
    
            row++;
    
            column=0;
    
          }
    
        }    
    
      }
    
    

    ich übergebe einen breakPoint z.B. 2 so sage ich nach 2 feldern, bitte ins nächste springen ... ist vllt. nicht schön, aber geht

    gruss sven

  11. Moin Jungs,

    ich weiß einfach nicht mehr weiter -.-

    Folgendes ... ich habe ne JTable mit nem DefaultTableModel ...

    meine Tabelle soll hinterher dynamisch aus einem Vector erstellt werden der Vector ist wiefolgt aufgebaut ..

    Vector vec = new Vector();
    
    vec.add("A");
    
    vec.add("A1");
    
    vec.add("B");
    
    vec.add("B1");
    
    vec.add("C");
    
    vec.add("C1");
    Also A gehört quasi zu A1 :? die Tabelle soll dann dynamisch wie folgt aufgebaut werden |----------------------------------------| |Attribute A,B,C || Attribute A1,B1,C1| ------------------------------------------ | A || A1 | B || B1 | C || C1 ... .. . ich weiß nicht, wie ich das hinbekomme - ich sitze schon Stunden an der sch**** Das Problem, was sich bei mir ergab wenn ich den Vector einfach in die Methode
    addRow()

    gepackt habe, das nur A und A1 ausgegeben wurden ...

    Vllt hat einer rat ...

    Gruss der Onkel

  12. Problem hat sich gelöst ...


    <script language="JavaScript" type="text/javascript">

    function makeForm(val) {

    document.getElementById("hassenichtgesehen").innerHTML = '<input type="text" name="bla" value="'+val+'" size="25" maxlenght="60">';

    }

    </script>

    <span ondblclick="javascript:makeForm('Bla Bla Bla');">Bla Bla Bla</span>

    [/html]

  13. Mahlzeit,

    Ich zerbereche mir die ganze Zeit schon den Kopf wie ich am besten folgendes Lösen könnte.

    Angenommen ich habe eine div

    <div id="hassenichtgesehen">Inhalt</div>
    nun soll es so sein das
    <div id="hassenichtgesehen" ondblclick="javascript:makeToForm(1);">Inhalt</div>
    Der Inhalt zu
    <div id="hassenichtgesehen" ondblclick="javascript:makeToForm(1);"><input type="text" name="bla" value="Inhalt"></div>
    wird. Ich brauche quasi einen Ansatz für die Funktion
    
    function makeToForum(inp) {
    
    // Funktionalitaet
    
    }
    
    

    Ich habe keinerlei Ahnung wie ich das realisieren soll

    Vllt. hat ja einer eine Idee wäre sehr dankbar

  14. Hey

    du kannst das Array nicht direkt via GET übertragen, da GET nur einen String verarbeiten kann ...

    Ich würde es jetzt einfach so lösen ...

    aufruf.php


    <?php

    $arrayTest = array();
    $arrayTest[0] = 50;
    $arrayTest[1] = 60;
    $arrayTest[2] = 70;
    $arrayTest[3] = 80;

    $array = implode(",",$arrayTest);

    echo '<img src="img.test.php?a='.$array.'">';

    ?>
    [/PHP]

    img.test.php

    [PHP]

    <?php

    $array = explode(",",$_GET['a']);

    $datay3=array($array [0],$array [1],$array [2],$array [3]);

    ?>

    Vllt. gibt es noch bessere möglichkeiten aber denke damit sei dir schon etwas geholfen ...

    Gruss Sven

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...