php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.12.2008, 18:55  
Neuer Benutzer
 
Registriert seit: 24.12.2008
Beiträge: 3
kwally befindet sich auf einem aufstrebenden Ast
Standard Include ersetzen

Hallo,
ich muss ein
include 'abc.php';
ersetzen, da jetzt der Inhalt von abc.php aus einer Datenbank kommt.
Dieser Inhalt kann PHP Skripte enthalten, insbesondere auch weitere includes.

Eine Lösung wäre, diesen aus der Datenbank gelesenen Inhalt in eine temporäre Datei zu schreiben und diese per include in das laufende Skript einzubinden.
Das erscheint mir wenig effizient. Gibt es vielleicht ein elegantere Lösung?

Weihnachtliche Grüße
klaus
kwally ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.12.2008, 19:19  
lutoma
Gast
 
Beiträge: n/a
Standard

Mit eval() kannst du den code direkt ausführen

http://de.php.net/eval
  Mit Zitat antworten
Alt 25.12.2008, 11:01  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo zusammen,

eval() ist jedoch an dieser Stelle die schlechteste aller Lösungen. Ich denke, man muss das Softwaredesign an dieser Stelle neu überdenken.

@kwally: kannst du die Umstände / Rahmenbedingungen nochmal näher erläutern? Was genau wurde in der Datei getan? Welche Inhalte wurden u.U. an die weiteren Scripte übergeben/für diese vorbelegt?

Bei einem sauberen Softwaredesign (z.B. über ein generisches HMVC-Design) sollte es kein Problem sein, weitere Untermodule über einen entsprechenden Mechanismus einzubinden. Wie bereits gesagt würde ich keinen Code in der Datenbank speichern - bestenfalls noch Anweisungen (aka. Merker), die geparst und ausgeführt werden.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 31.12.2008, 10:54  
Neuer Benutzer
 
Registriert seit: 24.12.2008
Beiträge: 3
kwally befindet sich auf einem aufstrebenden Ast
Standard eval()

Zitat:
Zitat von lutoma Beitrag anzeigen
Mit eval() kannst du den code direkt ausführen

PHP: eval - Manual
Vielen Dank. Im prinzip ist eval() die richtige Richtung.
Allerdings haben meine jetzigen includierten Dateien auch HTML-Code und der PHP Code wird mit <?php und ?>eingeschlossen.
Beides mag eval() nicht,
kwally ist offline   Mit Zitat antworten
Alt 31.12.2008, 11:01  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

eval() is evil!

Du musst den HTML- vom PHP-Code trennen und <?php und ?> entfernen. Denn an eval() muss man direkt(reinen) Code übergeben.
PTC ist offline   Mit Zitat antworten
Alt 31.12.2008, 11:14  
Neuer Benutzer
 
Registriert seit: 24.12.2008
Beiträge: 3
kwally befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
@kwally: kannst du die Umstände / Rahmenbedingungen nochmal näher erläutern? Was genau wurde in der Datei getan? Welche Inhalte wurden u.U. an die weiteren Scripte übergeben/für diese vorbelegt?

Bei einem sauberen Softwaredesign (z.B. über ein generisches HMVC-Design) .
Das eigentliche Problem ist die Grösse der Website (300K Seiten).
Jede Seite besteht aus einer Hauptdatei, die per Include den allgemeinen header/trailer also das generelle Layout einbindet.
Ausserdem wird der eigentliche Content per Include (also nochmal 300K) eingebunden. Diese content.php enthält zwar PHP, aber keine Kontrollstrukturen sondern nur Variablenzuweisungen und ein wenig HTML drumherum. Insoweit habve ich keine Probleme, dies in einer Datenbank abzulegen.

Über Softwaredesign mag man trefflich streiten, aber zu Beginn war mir nicht klar, dass es mal soviele Seiten werden. Ausserdem war mir nicht bewusst, dass ab 10K files pro Dateiverzeichnis viele ftp-clients Probleme bekommen.
Last not least (und das ist die eigentliche Motivation) mag mein Provider diese Massen von Dateien nicht. Es stört angeblich das Backup und die anderen Kunden auf dem physikalischen Server.

Ich muss jetzt erstmal eine schnelle Notlösung zaubern, über Redesign kann ich dann später nachdenken.
Falls es keine entsprechende PHP-Funktion oder andere bessere Lösung gibt, würde ich jetzt erstmal den Code aus der Datenbank holen, den in eine temporäre Datei schreiben und diese dann includieren. Mir graut davor (performance) aber mir fällt nichts besseres ein.

Frohes Neues Jahr
Klaus
kwally ist offline   Mit Zitat antworten
Alt 31.12.2008, 12:05  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

Zitat:
Zitat von kwally
Ausserdem war mir nicht bewusst, dass ab 10K files pro Dateiverzeichnis viele ftp-clients Probleme bekommen.
Das ist in der Filesystem-Theorie zu begründen. Cluster- bzw. Netzwerkdateisysteme (ich nehme an, dein Hoster setzt NFS für's Clustering ein) "mögen" eine große Anzahl an kleinen Dateien in einem Ordner nicht so gerne bzw. geht das auf die Performance. Hier sollte man grundsätzlich eine Unterstrukturierung einführen (z.B. nach den Anfangsbuchstaben des Hashes).

Zitat:
Zitat von kwally
Mir graut davor (performance) aber mir fällt nichts besseres ein.
Dann leg doch im /tmp-Verzeichnis Cache-Dateien ab...

Zitat:
Zitat von kwally
Ich muss jetzt erstmal eine schnelle Notlösung zaubern, über Redesign kann ich dann später nachdenken.
Das solltest du wirklich. Achte vor allem darauf, dass die Strukturierung der Seite mit dem eingesetzten Tool / Framework möglichst granular möglich ist (Stichwort: HMVC), denn sonst läufst du auch nach dem Redesign Gefahr, dass wieder ein Moorloch draus wird.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 31.12.2008, 13:47  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von PTC Beitrag anzeigen
eval() is evil!

Du musst den HTML- vom PHP-Code trennen und <?php und ?> entfernen. Denn an eval() muss man direkt(reinen) Code übergeben.
das stimmt nicht, eval beginnt intern nur selber mit einem open tag den man auch schließen kann:

PHP-Code:
<?php eval('?> <p>asdf</p> <?php echo 1; ?>'); ?>
Zitat:
Ich muss jetzt erstmal eine schnelle Notlösung zaubern, über Redesign kann ich dann später nachdenken.
Falls es keine entsprechende PHP-Funktion oder andere bessere Lösung gibt, würde ich jetzt erstmal den Code aus der Datenbank holen, den in eine temporäre Datei schreiben und diese dann includieren. Mir graut davor (performance) aber mir fällt nichts besseres ein.
in dem fall bleibt dir nichts als eval übrig...
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 31.12.2008, 14:06  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Zitat:
Zitat von brian johnson Beitrag anzeigen
das stimmt nicht, eval beginnt intern nur selber mit einem open tag den man auch schließen kann:
Stimmt, du hattest recht.
PTC ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
include() ersetzen Shadow21 PHP Tipps 2006 3 30.08.2008 14:13
include isoliert ausführen – Lösungsansatz gesucht veit PHP-Fortgeschrittene 8 09.04.2008 09:26
hinter include wird eine 1 angezeigt |~Râdîant~| PHP Tipps 2008 8 19.09.2007 13:52
include Dateien wieder ausängen o.Ä. netti PHP Tipps 2007 8 17.12.2006 15:14
include problem Canni PHP Tipps 2006 26 14.11.2006 14:24
include, nur bestimmten teil neu laden Calli PHP Tipps 2006 2 27.01.2006 15:57
Auf Firmen-Server funzt kein include aus fremden Verzeichnis PHP-Fortgeschrittene 3 19.07.2005 16:49
[Erledigt] Include liegt in einem anderen Verzeichnis - es geht nix PHP Tipps 2005-2 3 03.07.2005 22:40
[Erledigt] Sessions auch bei include aktiv? PHP Tipps 2005 1 28.02.2005 19:58
[Erledigt] Fehlermeldungen für include() PHP Tipps 2005 5 21.02.2005 11:34
[Erledigt] was gibt es sonst noch, anstad include? PHP Tipps 2005 2 05.01.2005 22:31
[Erledigt] Problemme mit include... PHP Tipps 2004-2 6 30.11.2004 12:20
HTTP_GET_VARS + Include = Array leer PHP Tipps 2004-2 3 24.11.2004 15:12
[Erledigt] includ. Text ersetzen ohne vars PHP Tipps 2004 3 13.09.2004 23:16
Reguläre Ausdrücke beim suchen und ersetzen Off-Topic Diskussionen 5 05.07.2004 15:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php include löschen, php include entfernen, html aus include datien entfernen php, php include rausnehmen, include löschen, php 5.3 include ersetzen, php include lösche, php include weg machen, seiten mit include austauschen, php alle includes löschen, php include tauschen, include entfernen php, php includes austauschen, php includes entfernen, <?php ?> für eval entfernen, php eval ersetzen, eval include, php include austauschen, php performance include, php eval opening tags

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:38 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum