72quadrat: PHP Funktion nacheinander wiederholt ausführen

Hallo, ich bin nicht der große PHP-Spezi und aktuell leider ein nicht unerhebliches Problem.

Ich habe eine PHP Funktion geschrieben die von ner Bildergalerie über eine eigene PHP-API die bereits generierten Bilder fischt und in meine Seite schiebt. Es handelt sich um eine Portfolioseite mit wirklich einer ganzen Menge an Daten die ich mithilfe von Ajax in unterschiedliche Happen Teile und über Buttons einblenden lasse. Konkret: http://72quadrat.de/kategorie/portfolio

Das funktioniert auf meinem Live-Server auch noch ganz gut und ist dank Cache auch einigermaßen praktikabel.

NUN ZUM PROBLEM
Ich bin verdammt nah am Speicherlimit von PHP angelangt und auf meinem lokalen Testserver ist aktuell auch schon Schluß.

Wie gesagt es wird untereinander für die verschiedenen Portfoliokategorien immer wieder eine PHP-Funktion aufgerufen.
1. Aufruf 17931076 Bytes
2. Aufruf 18162824 Bytes
3. ....
X. Aufruf 31682412 Bytes

Gibt es irgendwie die Möglichkeit, die Ausführung der Funktion nacheinander abzuarbeiten um Speicherplatz zu sparen?

Ich hatte schon versucht per AJAX HTTP Request einzelne PHP-Dateien erst bei Klick aufzurufen, doch das hat sich mit dem Layout der Seite überhaupt nicht vertragen...

  1. Hello,

    um welche Funktion geht es? Du hast sicherlich nur vergessen, die noch hinterherzuposten?

    Wie stellst Du denn das Speicherlimit fest und wodurch wurde es festgelegt?
    Auf welchem System läuft die Applikation? Linux, BSD-Unix, Windows, ...?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. Hi!

    Hallo, ich bin nicht der große PHP-Spezi und aktuell leider ein nicht unerhebliches Problem.

    Du übertreibst da schamlos - wir haben aktuell weit größere Probleme, als Dich;)

    Da Du das Thema Problem zunächst thematisiert hast, laß uns zum Kern kommen - ich bin ein Gegner dieser hier omnipräsenten Glaskugel-Metapher: wir können nicht riechen, was Du getan (an Code geschrieben) hast.
    Zeig uns doch den Code, dann können wir etwas dazu sagen. Ich verstehe zum Teil die Hemmungen, selbst geschriebenen Code her zu zeigen, wenn man anfängt sich mit einer Programmier- (Script-) Sprache zu beschäftigen.

    Ich verspreche Dir aber eines (frei nach Larry Wall): wir werden nicht lachen, zumindest nicht so, daß es Dich peinlich berührt;)

    Im Ernst: ohne etwas von Deinem Code zu sehen kann Dir hier niemand helfen - das ist einfach so. Wir reden hier nicht über theoretische Probleme, sondern praktische. In der Praxis muß man Dinge anfassen (Code lesen).

      
    $nextTry = new $seventyTwoSquare();  
    $nextTry->postCode();  
    
    

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. Hi Peter!

      Ich verspreche Dir aber eines (frei nach Larry Wall): wir werden nicht lachen, zumindest nicht so, daß es Dich peinlich berührt;)
      [...]

      $nextTry = new $seventyTwoSquare();
      $nextTry->postCode();

      Fatal error: PHP is currently laughing its ass off because of the funny code in Thread 188661 on line 2

      MfG H☼p~hihi~sel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  3. O.K.
    Hier die beiden Funktionen wobei in der gallery Funktion die album Funktion aufgerufen wird...

    Das ganze arbeitet mit der Slideshowpro Director PHP-API zusammen so daß hier einiges natürlich sehr Slideshowpro Director spezifisch ist.

    <?php  
    	/***  
    	*	Html für eine ganze Galerie erstellen  
    	*	dabei auf die Funktion 'album' zurückgreifen  
    	*	  
    	*	<?php gllery([gallery_id
    ) ?>  
    	***/  
      
    	function gallery( $gallery_id ) {  
      
    		$director = new sspdc;  
    	    $gallery = $director->gallery->get( $gallery_id );  
      
    		//echo '<h2 class="ssp-gallery-title">' . $gallery->name . '</h2>';  
    		//echo '<p class="ssp-gallery-description>"' . $gallery->description . '</p>';  
      
    		if( current_user_can('level_10')) {  
    			echo ' x x x ';  
    		}  
      
    		// Das Array mit meinen Alben definiere  
    		$meinealben = array();  
      
    		foreach($gallery->albums->album as $album) {  
    			// Die ID eines Albums als String und nicht als XML-Object auslesen  
    			// damit wir mit dem String weitermachen können  
    			$id = (string) $album->id ;  
    			// String in mein neues Array packen  
    			array_push($meinealben, $id);  
    		}  
      
    		// Doppelte Eintraege entfernen  
    		$meinealben = array_unique($meinealben);  
      
    		// Die einzelnen IDs der Alben in einer Foreach Schleife bearbeiten  
    		foreach($meinealben as $album_id) {  
    			album( $album_id, 100 );  
    		}  
      
    	}  
    ?>  
    <?php  
    	/***  
    	*	Html für ein angegebenes Album erstellen  
    	*	  
    	*	  
    	*	<?php album([alumb_id],[bildanzahl]) ?>  
    	***/  
      
    	function album( $album_id, $image_count ) {  
      
    		$director = new sspdc;  
    		$album = $director->album->get( $album_id );  
    		$images = $album->contents[0];  
    		$description = $album->description;  
      
    		// Die Zeilenumbrueche in der Beschreibung der Director API Funktion  
    		// in einzelne zeilen splitten  
    		$intro = $director->utils->convert_line_breaks($album->description);  
      
    		// Die Beschreibung mit dem eingefügten "[mehr]" in zwei Teile teilen  
    		// und ein Array darauf formen $description[0] ist der 1. Teile  
    		// $description[1] der zweite Teil  
    		$description = split ("\[mehr\]", $description);  
      
    		// Die Zeilenumbrueche in der Beschreibung der Director API Funktion  
    		// in einzelne zeilen splitten  
    		$intro = $director->utils->convert_line_breaks($description[0]);  
    		$intro = str_replace( "<br>", "<br/>", $intro);  
    		$beschreibung = $director->utils->convert_line_breaks($description[1]);  
    		$beschreibung = str_replace( "<br>", "<br/>", $beschreibung);  
      
    		$i = 0;  
    		$html = '<div class="ssp-post">';  
    		$html .= '<h3>'. $album->name . '</h3>';  
    		$html .= '<div class="ssp-intro">'. $intro . '</div>';  
    		if( current_user_can('level_10')) {  
    			$html.= ' x x x '. memory_get_usage() .' Bytes</span></div>';  
    		}  
    		$html .= '<div class="ssp-thumbs-container">';  
    		$html .= '<div class="ssp-thumbs">';  
      
    		foreach( $images as $image ) {  
    			if ($i < $image_count ) {  
    				if ($director->utils->is_video($image->src)) {  
    					// Mediabox Ansicht verwenden  
    					$html .= '<a href="'. $image->original->url . '" rel="lightbox[ flash 550 410]" title="FLV player::Beispiel" class="ssp-video"><img src="/wp-content/themes/72quadrat_v4/img/ssp-platzhalter.gif" alt="link"/></a>';  
    				} else {  
    					// Standard Lightbox Ansicht verwenden  
    					$html .= '<a href="'. $image->fullsize->url . '" rel="lightbox[galerie' . $album->name . $album_id . ']" title="'.  $album->name . '::' . $image->title . '"><img src="' . $image->thumb->url . '"  alt="'  . $image->title . ", " . $image->caption . '" /></a>';  
    				}  
    			}  
    			$i++;  
    		}  
    		$html .= '</div>';  
    		$html .= '</div>';  
    		$html .= '<div class="ssp-beschreibung">'. $beschreibung . '</div>';  
    		$html .= '</div>';  
      
      
    		// Leider gibt es bei den Alben offenbar teils UTF-8 encodete Inhalte  
    		// und teilweise irgendwie anders ISO encodete Sachen.  
    		// Durch die '0' oder '1' am Ende wird das unterschiedlich ausgegeben.  
    		if (preg_match("/ä|ö|ü|Ä|Ö|Ü|ß/", $html)) {  
    			//alles gut  
    			echo $html;  
    		} else {  
    			//fchlcr  
    			// Eine in ISO encodete Variante erstellen fuer Alben die falsch encoded sind  
    			$utf8html = utf8_decode($html);  
    			echo $utf8html;  
    		}  
    	}  
    ?>