<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ebene7 &#187; Server und Technik</title>
	<atom:link href="http://blog.ebene7.com/kategorie/server-und-technik/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ebene7.com</link>
	<description></description>
	<lastBuildDate>Tue, 04 Jun 2013 18:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Eigene Werte aus PHP in die Apache Logs schreiben</title>
		<link>https://blog.ebene7.com/2011/12/01/eigene-werte-aus-php-in-die-apache-logs-schreiben/</link>
		<comments>https://blog.ebene7.com/2011/12/01/eigene-werte-aus-php-in-die-apache-logs-schreiben/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 05:00:50 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Server und Technik]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Callback]]></category>
		<category><![CDATA[Logging]]></category>
		<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=3193</guid>
		<description><![CDATA[Heute, na inzwischen eigentlich schon gestern, habe ich bei der Suche nach einer Apache-Konfiguration durch Zufall etwas interessantes gefunden. Eine PHP-Funktion namens &#8220;apache_note()&#8220;, mit der man Werte aus PHP an die Apache-Logs weitergeben kann. Der eine oder andere kennt die &#8230; <a href="https://blog.ebene7.com/2011/12/01/eigene-werte-aus-php-in-die-apache-logs-schreiben/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute, na inzwischen eigentlich schon gestern, habe ich bei der Suche nach einer Apache-Konfiguration durch Zufall etwas interessantes gefunden. Eine PHP-Funktion namens &#8220;<a href="http://php.net/manual/de/function.apache-note.php" target="_blank">apache_note()</a>&#8220;, mit der man Werte aus PHP an die Apache-Logs weitergeben kann.<span id="more-3193"></span></p>
<p>Der eine oder andere kennt die Funktion vielleicht schon, aber für mich ist sie neu. Daher habe ich damit einfach mal etwas rumprobiert und einen kleinen Codeschipsel dazu gebastelt. Die Apache-Logs können für vielfältige Auswertungen verwendet werden.</p>
<p>Zum Beispiel welche Seiten besucht oder nicht gefunden werden können, zum Tracken von Werbemitteln oder in dem Fall auch zum Protokollieren weiterer PHP-Werte.</p>
<p>In einem früheren Projekt haben wir mal die Zeit und den Speicherverbrauch gemessen die ein PHP-Script braucht, um die Seite auszuliefern. Dazu hatten wir eine einfache Klasse, ähnlich der folgenden (im dem Beispiel wird nur die Zeit gemessen):</p>
<pre>class PageBenchmark
{
  private $_startTime;
  private static $_instance;

  protected function __construct()
  {
    register_shutdown_function(array(self::$_instance, 'stop'));
    $this-&gt;start();
  }

  protected function __clone() {}

  public function getInstance()
  {
    if (null === self::$_instance) {
      self::$_instance = new self();
    }
    return self::$_instance;
  }

  public function start()
  {
    $this-&gt;_startTime = microtime(true);
  }

  public function stop()
  {
    $time = microtime() - $this-&gt;_startTime;
    apache_note('worktime', $time);
  }
}

PageBenchmark::getInstance();</pre>
<p>Die Klasse ist bewusst einfach gehalten und sollte möglichst ohne weitere Abhängigkeiten funktionieren. Die Verwendung ist dabei recht einfach. Das Script an einer zentralen Stelle möglichst früh einbinden. Durch den Aufruf von getInstance() wird ein Objekt instanziiert und die Methode stop() als Callback registriert.</p>
<p>Wird das Script nun abgearbeitet, wird diese Methode zum Ende aufgerufen und die verbrauchte Zeit wird errechnet und an Apache übergeben.</p>
<p>Damit das ganze dann einen Sinn bekommt, muss die Konfiguration des Webservers noch etwas angepasst werden. Für unser Beispiel schreiben wir die Zeit an das Ende jeder Zeile.</p>
<pre>LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" [%{worktime}n]" mylogformat
CustomLog /var/www/sandkasten/logs/access.log mylogformat</pre>
<p>Danach natürlich den Webserver neu starten, bzw. ein Reload machen. Ab jetzt sollte zu jedem Logeintrag die verbrauchte Zeit mitgeschrieben werden. Die verwendeten Kürzel werden in der <a href="http://httpd.apache.org/docs/current/mod/mod_log_config.html" target="_blank">Doku zu mod_log_config</a> erklärt.</p>
<p>Viel Spaß beim Probieren!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.ebene7.com/2011/12/01/eigene-werte-aus-php-in-die-apache-logs-schreiben/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Webentwicklung in virtueller Umgebung</title>
		<link>https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/</link>
		<comments>https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 11:00:15 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Server und Technik]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CodeSniffer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[PHPUnit]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Secure Shell]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Sun VirtualBox]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=509</guid>
		<description><![CDATA[In den letzten Tagen habe ich mich etwas mit der Virtualisierungssoftware VirtualBox von Sun Microsystems beschäftigt und will nun einmal über die Möglichkeiten und die Vorteile dieser Technik im Zusammenhang mit der Webentwicklung berichten. Die meisten PHP-Programmierer, sofern sie nicht &#8230; <a href="https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In den letzten Tagen habe ich mich etwas mit der Virtualisierungssoftware <a href="http://de.wikipedia.org/wiki/VirtualBox" target="_blank">VirtualBox</a> von Sun Microsystems beschäftigt und will nun einmal über die Möglichkeiten und die Vorteile dieser Technik im Zusammenhang mit der Webentwicklung berichten.</p>
<p><span id="more-509"></span>Die meisten PHP-Programmierer, sofern sie nicht auf einem Linux-System mit grafischer Oberfläche arbeiten, werden das Problem sicherlich gut kennen.</p>
<p>Wenn man nur einen Rechner zur Verfügung hat und alle Dienste unter Windows laufen entspricht das sicherlich nicht unserem Live-System und wir können nicht alles zuverlässig testen und sind auch sonst an vielen Stellen eingeschränkt in unserer Arbeit. Zudem laufen die Dienste in der Regel immer mit an, auch wenn wir nicht Programmieren wollen und verbrauchen dann unnötig Rechenleistung.</p>
<p>Die zweite Möglichkeit wäre dann noch ein zweiter Entwicklungsrechner, auf dem wir ein Linux installieren und dann über das Netzwerk arbeiten. Das würde uns einen weiteren Rechner und natürlich auch noch Strom kosten. Selbst wenn dieser Entwicklungsserver von einem ganzen Team genutzt würde, besteht immernoch die Gefahr, das eine Mitarbeiter die Kiste aus Versehen in die Knie zwingt.</p>
<p>Durch die Arbeit mit der Virtuellen Box (oder vergleichbaren Programmen) kann nun jeder Entwickler auf seinem Windows gleichzeitig auch ein Linux-System zur Verfügung haben und dessen Vorteile nutzen (z.B. <a href="http://de.wikipedia.org/wiki/Symbolische_Verkn%C3%BCpfung" target="_blank">SymLinks</a>, <a href="http://de.wikipedia.org/wiki/Cronjob" target="_blank">Cronjobs</a>).</p>
<p>Einmal installierte und konfigurierte Systeme lassen sich exportieren und wieder an andere Verteilen, so dass eine einheitliche und dennoch individuelle Entwicklung möglich ist. Die Zeitersparnis beim Aufsetzen eines neues Entwicklungsrechners ist dabei enorm.</p>
<p>Die Gastsysteme können nach der Installation gewöhnlich wie jeder andere Rechner im Netzwerk angesprochen werden, d.h. wir könnten unsere PHP-Dateien mit <a href="http://de.wikipedia.org/wiki/File_Transfer_Protocol" target="_blank">FTP</a> hochladen oder einfach eine <a href="http://de.wikipedia.org/wiki/Samba_%28Software%29" target="_blank">Samba</a>-Freigabe unseres virtuellen Servers nutzen.</p>
<p>Auf die einzelnen Schritte der Installation gehe ich in diesem Artikel nicht ein, könnte das aber bei ausreichenden Interesse für einen weiteren Artikel einplanen.</p>
<p>Meine Installation basiert auf einem Debian-Linux. Die Konfiguration beinhaltet neben den typischen LAMP-Komponenten (Apache2, MySQL und PHP5), u.A. Samba für die Netzwerkfreigabe, einen <a href="http://de.wikipedia.org/wiki/Ssh" target="_blank">SSH</a>-Server, um mit <a href="http://de.wikipedia.org/wiki/Putty" target="_blank">PuTTY</a> darauf arbeiten zu können, <a href="http://de.wikipedia.org/wiki/Pear" target="_self">PEAR</a>, PHP-CodeSniffer, <a href="http://de.wikipedia.org/wiki/PHPUnit" target="_blank">PHPUnit</a>, <a href="http://de.wikipedia.org/wiki/Apache_Ant" target="_blank">Apache Ant</a>, sowie <a href="http://de.wikipedia.org/wiki/PhpMyAdmin" target="_blank">phpMyAdmin</a> und verschiedene <a href="http://framework.zend.com/" target="_blank">Zend Framework</a> Versionen.</p>
<p>Das exportierte Image ist dabei mit 734 MB klein genug, dass es auf einer CD oder einem USB-Stick weitergeben werden kann.</p>
<p>Die Technik der Virtualisierung ist nicht neu, aber ich denke, es ist eine gute und vor allem kostengünstige Alternative zu den anderen genannten Möglichkeiten.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
