PHP: Aktionen im Hintergrund ausführen

Hi,

ich habe heute etwas an der Performance meines Systems geschraubt.

Vor allem der integrierte PHP-Piwik-Tracker sorgte hier für messbar längere Ladezeiten meiner Seiten, da dieser natürlich erst eine Verbindung zum Piwik-Server aufbauen muss etc.

Meine Idee war also die HTML-Ausgaben an den Client zu schicken, danach die Verbindung zum Client zu trennen und anschließend erst den Seitenaufruf auf dem Server zu tracken, ohne dass der Client etwas davon mitbekommt.

Meine endgültige, funktionierende Lösung:

<?php

// Output-Buffering starten
ob_start();

// Seiteninhalt
echo '<html>... stuff ...</html>';

register_shutdown_function(function(){

	// Client kann Vorgang nicht abbrechen
	ignore_user_abort(true);
	
	// Verbindung schließen
	header('Connection: close');
	header('Content-Length: '.ob_get_length());
	
	// Alle Buffer löschen und ausgeben
	while(@ob_end_flush());
	
	// Daten an den Browser schicken
	flush();
	
	// Besuch tracken
	Piwik::track();
	
	// Session beenden
	session_write_close();
	
});

Geholfen hat mir: http://stackoverflow.com/questions/138374/close-a-connection-early

WinMerge wird nicht mehr aktiv weiterentwickelt

http://kimmov.wordpress.com/2010/02/21/priorities/

oh noes! :(
Kann das bitte bitte bitte jemand mal forken und nach QT oder zumindest GTK portieren?
Ich such schon EWIG nach einer würdigen Alternative für Linux…

Meld finde ich eher nicht so toll.
Ist lange nicht so komfortabel zu bedienen! Die GUI von WinMerge ist einfach super!

Wenn ich doch nur mehr Zeit hätte, würde ich es selbst machen… Schüler müsste man nochmal sein ;)