php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.12.2011, 21:44  
Neuer Benutzer
 
Registriert seit: 25.12.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tiot befindet sich auf einem aufstrebenden Ast
Standard "Bild des Tages" mit readfile

Guten Tag allerseits,
ich programmiere momentan ein Script, um ein „Bild des Tages“ jeden Tag neu über eine PHP-Datei per readfile (dies muss sein, da es eine Möglichkeit für User zum Einbinden über <img scr=http://url.tld/image.php> geben soll) auszugeben. Dazu ermittle ich das jeweilige Datum und lasse die dazu passende Datei im Ordner images mit einem Dateinamen wie „111224.jpg“ auslesen:
PHP-Code:
<?php
$datum 
date("ymd");
$filename "./images/datum().jpg";
if (
file_exists($filename)) {
echo 
"header('Content-Type: image/jpeg'); readfile('$filename');";
} else {
    echo 
"header('Content-Type: image/jpeg'); readfile('./images/no-image.jpg');";
}
?>
Leider funktioniert dieses Script, nicht ordnungsgemäß, beim Aufruf erhalte ich eine Fehlermeldung (Die Grafik „http://url.tld/datei.php“ kann nicht angezeigt werden, weil sie Fehler enthält.)
Ich wäre dankbar für Hilfe!
tiot ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.12.2011, 22:42  
Neuer Benutzer
 
Registriert seit: 11.08.2011
Beiträge: 12
PHP-Kenntnisse:
Fortgeschritten
Zeichen32 befindet sich auf einem aufstrebenden Ast
Standard

Ich bin mir sicher das es die Datei "./images/datum().jpg" nicht gibt.

Schau dir mal einen Artikel zur Stringverkettung an
Zeichen32 ist offline   Mit Zitat antworten
Alt 25.12.2011, 23:29  
Neuer Benutzer
 
Registriert seit: 25.12.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tiot befindet sich auf einem aufstrebenden Ast
Standard

Danke!
Hier noch einmal mein fertiger Code:
PHP-Code:
<?php
$datum 
date("ymd");
$filename './images/'.$datum.'.jpg';
if (
file_exists($filename)) 
?>
<?php
header
("Content-type: image/jpeg"); readfile("$filename"); 
?>
    <?php }
     else 
     { 
?>
    <?php
header
("Content-type: image/jpeg"); readfile("./images/no_image.jpg"); 
?>
    <?php }
?>
tiot ist offline   Mit Zitat antworten
Alt 25.12.2011, 23:56  
Erfahrener Benutzer
 
Registriert seit: 26.11.2008
Beiträge: 264
dsentker befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php
$date 
date("ymd");
$filePath './images/' $date '.jpg';
$readfileSrc = (file_exists($filePath) && is_file($filePath)) ? $filePath './images/no_image.jpg';
header("Content-type: image/jpeg"); 
readfile($readfileSrc);
?>
Siehe Tipp zur Information über Stringverkettung in PHP.
__________________
dsentker ist offline   Mit Zitat antworten
Alt 26.12.2011, 00:04  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Mit readfile() habe ich manchmal schlechte Erfahrungen gemacht wenn die Dateien sehr groß wurden. Das Skript ist dann oft in einen Memory-Limit-Fehler gelaufen. Deshalb nutze ich manchmal lieber passthru() in Verbindung mit dem cat-Shell-Kommando.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 26.12.2011, 03:46  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von dsentker Beitrag anzeigen
PHP-Code:
<?php
$date 
date("ymd");
$filePath './images/' $date '.jpg';
$readfileSrc = (file_exists($filePath) && is_file($filePath)) ? $filePath './images/no_image.jpg';
header("Content-type: image/jpeg"); 
readfile($readfileSrc);
?>
Siehe Tipp zur Information über Stringverkettung in PHP.
PHP-Code:
$filePattern './images/{name}.jpg';
$file str_replace('{name}'date('ymd'), $filePattern);
$nofile str_replace('{name}''no_image'$filePattern);

header('Content-type: image/jpeg');
$handle fopenis_file($file) ? $file $nofile'rb');
while( 
feof($handle) ) echo fread($handle1024);
fclose($handle); 
x byte häppchen "streamen" > file durchwursten
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 26.12.2011, 07:58  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Gibt's zu den Aussagen in den beiden letzten Posts irgendwo was zu lesen?
__________________
Blog | Buch | Kaloa
mermshaus ist offline   Mit Zitat antworten
Alt 26.12.2011, 11:56  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
Gibt's zu den Aussagen in den beiden letzten Posts irgendwo was zu lesen?
Die Comments zum Befehl readfile() sind nicht ganz ohne Nutzwert zu dem Thema.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 26.12.2011, 12:04  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Ich weiß nur, dass ich mit passthru() das Memory-Limit umgehen konnte.
fread() funktionierte meines Wissens nach nicht so toll, kann aber auch sein, dass mich meine Erinnerung da trügt.
Insgesamt könnte ich mir aber vorstellen, dass passthru() etwas effizienter ist als eine Schleife in PHP. Das müsste man jetzt aber mal mit einem Benchmark testen.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 26.12.2011, 19:26  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Zitat:
Zitat von tr0y
Die Comments zum Befehl readfile() sind nicht ganz ohne Nutzwert zu dem Thema.
Wie ich vor meiner Rückfrage festgestellt habe, enthalten die weder wesentliche Hinweise auf ein generelles Problem mit volllaufendem Speicher (aber den Hinweis darauf, dass es an Output Buffering liegen könnte) noch einen Hinweis darauf, warum in der von dir geposteten Variante „x byte häppchen "streamen" > file durchwursten“ sein soll.

Wir können ja mal gucken, was readfile intern macht:

- http://svn.php.net/viewvc/php/php-sr...w=markup#l1464

Hier wird php_stream_passthru aufgerufen. Das ist ein Makro, das hier definiert zu werden scheint:

- http://svn.php.net/viewvc/php/php-sr...ew=markup#l443

Die zugehörige Funktion:

- http://svn.php.net/viewvc/php/php-sr...w=markup#l1215

__________________
Blog | Buch | Kaloa
mermshaus 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
video readfile julienyxz PHP Einsteiger 1 31.10.2011 21:04
readfile ersatz jens76 PHP Tipps 2010 16 05.09.2010 15:19
Mit readfile() Textdatei in Windows-"Zeichensatz" einlesen wiseguy PHP Tipps 2009 13 13.12.2009 21:06
[Erledigt] readfile() Zwischenspeicher Sensewell PHP-Fortgeschrittene 3 24.11.2009 14:35
[Erledigt] readfile() und pdf - Lange Dateinamen machen Probleme ... ewolg PHP Tipps 2009 18 16.07.2009 17:21
Scriptsuche Readfile Badwordscript fan34 Scriptbörse 0 05.06.2009 17:21
[Erledigt] Content Type / readfile / 1-Klick-Download sean PHP Tipps 2009 5 29.04.2009 16:31
Readfile und ein Datenbank Kamcio PHP Tipps 2009 3 28.02.2009 18:37
[Erledigt] readfile Problem freakymiky PHP Tipps 2008 55 21.10.2008 11:52
Readfile gibt keine Bilder aus php_user PHP Tipps 2008 3 10.04.2008 10:35
Readfile: Abbruch mitten im Download bei großer Datei Melchior PHP Tipps 2006 8 14.06.2006 14:35
readfile mit dateien größer 2MB wurtzel PHP Tipps 2006 9 05.03.2006 18:48
Problem mit readfile()!! Klaus PHP-Fortgeschrittene 4 09.12.2005 19:59
Variabelübergabe mit readfile PHP Tipps 2005 5 07.04.2005 13:21
readfile im echo bereich Blank PHP Tipps 2005 4 03.03.2005 18:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ajax bild übergeben header readfile, readfile jpg php, header content type image/jpeg datie kann nicht angezeigt werden weil sie fehler, bild per readfile(), per readfile() bild ausgeben, header(\content-type: image/jpeg\);    echo readfile, php readfile grafik kann nicht angezeigt weil sie fehler enthält, php readfile die grafik kann nicht angezeigt werden, content-type: image readfile bild, php readfile image, readfile datei einbinden, readfile jpg wird nicht angezeigt, php readfile jpg, readfile image weil sie fehler enthält

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:49 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