ATA

ATA-Schnittstellen
Advanced Technology Attachment. ATA wird synonym verwendet für IDE (Integrated Disc Electronics, Integrated Drive Electronics, Integrated Device Electronics), wobei IDE  den ganzen Bereich von Hardware-Schnittstellen von Laufwerken bezeichnet. Es handelt sich um einen Schnittstellenstandard für Festplatten. Dieser Standard wurde von der ANSI (American National Standards Institute) gesetzt.  Ultra-ATA entspricht Ultra-DMA (Ultra-Direct Memory Access). Mit ULTRA-DMA wird die IDE-Schnittstelle beschleunigt. Die Übertragungsgeschwindigkeiten liegen bei ULTRA-DMA/33, Ultra-DMA/66 und ULTRA-DMA/100 bei 33, 66 bzw 100 MB/s.  Im Unterschied zu den Vorgängerstandards, der ST506-Schnittstelle von Seagate mit den Aufzeichnungsverfahren MFM (Modified Frequency Modulation) und RLL (Run Length Limited)  sowie Enhanced Small Disk Interface (ESDI)  befindet sich ein Teil der Controller-Elektronik auf dem Peripheriegerät. Dies kann beispielsweise die Festplatte sein. Daher leitet sich die Bezeichnung IDE ab. Eine Verbesserung dieses Standards ist  Enhanced-IDE (EIDE). Dies entspricht ATA-2. EIDE bedeutet, dass der Festplatten-Controller 4 Kanäle (anstatt 2) unterstützt. Massgebend bei der Entwicklung von EIDE war die Firma Western-Digital, welche die ATA-Spezifikation um proprietäre  Ansätze erweiterte. Auch das BIOS wurde um einige Funktionen aufgewertet. Neue Funktionen und Eigenschaften von EIDE waren: Erweiterung der ATA-Schnittstelle um einen zweiten Kanal an dem dann zwei weitere Laufwerke  angeschlossen werden können, insgesamt vier Laufwerke sind dann anschliessbar. Weiterhin höhere Speicherkapazitäten und Datentransferraten. Weitere Laufwerke wie CD-ROM Laufwerke oder Streamer können über das ATAPI-Protokoll  angeschlossen werden.  ATAPI (Advanced Technology Attachment with Packet Interface) stellt eine Ausbaustufe des ATA-Protokolls dar, um SCSI-Befehle durch den Packet-Befehl des ATA-Protokolls ausführen zu können.  Die Bezeichnung Parallel ATA (P-ATA) wurde von der Industrie eingeführt um alle ATA-Varianten von S-ATA abzugrenzen.  Die ATA-Spezifikationen wurden immer weiter entwickelt, die ATA-Schnittstelle ist jedoch abwärtskompatibel. Eine ATA-I Festplatte kann demnach z.B. an einem UltraDMA/66-Controller zum Betrieb gebracht werden.

Funktionsweise von ATA 
Bei ATA erfolgt die Kommunikation zwischen CPU und Festplatte über mehrere 8-Bit-Register. Diese Register dienen der Adressierung, Steuerung und Kommandoübertragung. Das Datenregister verfügt mit 16-Bit über eine breitere  Anbindung. Das Datenregister kann von der CPU die Daten so schneller empfangen. Dadurch können Datenpakete zwischen dem Hauptspeicher und der HDD gesendet und empfangen werden. Der unmittelbare Vorgang der Datenübertragung kann dann starten: es wird der  entsprechende Sektor der HDD identifiziert. Dies erfolgt über die jeweiligen Register der Sektornummer, Zylindernummer und des Laufwerkes.  Die Übertragung der Kommandos erfolgt über das Kommandoregister, wobei der Datenaustausch zwischen Controller und HDD durch das Datenregister erfolgt. Danach werden die Daten in den Cache der HDD übertragen.  Ein Dekodierer übernimmt die korrekte Adressermittlung woraufhin die Schreib/Lese-Köpfe entsprechend in Stellung gebracht werden.  Bei der ATA-Spezifikation hat man es mit zwei Registerblöcken (AT-Task File) zu tun: der Steuerregisterblock und der Kommandoregisterblock.  Um die jeweiligen Register anzusteuern gibt es fünf verschiedene Signale. Die Auswahl zwischen den Blöcken erfolgt über die Adress-Signale CS1 und CS0.  Über die Signale DA0, DA1 und DA2 wird entschieden, welches der Register aktiv ist.  Die ATA-Spezifikation nutzt viele Register um ihre Aufgabe zu erfüllen: darunter sind das Statusregister mit dem Laufwerksstatus nach dem letzten Kommando, das Laufwerkregister mit der Laufwerksnummer (Master/Slave-Prinzip) und der Kopfnummer (Head), ein  Kommando- und Fehlerregister, das Daten- und das Steuerregister, ein Register für Zylindernummer (Cylinder, Cyl), Sektornummer (Sec) und Sektorzahl.             
Siehe auch:    DMA   Ultra-DMA   S-ATA   S-ATA-II   SCSI   ATAPI   RAID   NCQ   Festplatte   Interrupt-Request

  SCSI
SCSI Karte SCSI Karte
Small Computer System Interface, SCSI umgangssprachlich auch Skasi ('scuzzy') genannt. Small Computer System Interface ist wie IDE (Integrated Device Electronics) ein Standard für eine Schnittstelle, die hauptsächlich bei Festplatten  Verwendung findet, allerdings ein sichereres Übertragungsprotokoll bietet. Zudem erlaubt diese Schnittstelle auch den Anschluss anderer Geräte als Festplatten, z.B. Drucker, Bandgeräte, Scanner und optische Laufwerke.  Es lassen sich maximal 8 bzw. 16 Geräte ansteuern.

SCSI ist ähnlich 'intelligent' wie IDE (parallel ATA) sowie gepuffert und basiert auf einer Peer-to-Peer Schnittstelle. Die physische Datenschicht wird abstrahiert. Es werden Hand-Shake Signale  zwischen den SCSI-Einheiten verwendet, bei SCSI-1 und SCSI-2 besteht die Möglickeit einer Paritätsfehlerüberprüfung. Ab SCSI-160 erfolgt eine zyklische Redundanzprüfung mit CRC32 sowie eine Domain-Validierung. 
Im SCSI-Protokoll ist eine Host zu Host Kommunikation, Host zu Peripherie-Einheit Kommunikation und eine Peripherie-Einheit zu Peripherie-Einheit Kommunikation vorgesehen. Die meisten SCSI-Einheiten sind jedoch SCSI-Targets, welche nicht selber als  SCSI-Initiatoren handeln können und damit keine SCSI-Aktionen starten können. Grundsätzlich ist es möglich, daß ein SCSI-Peripherie Gerät als SCSI-Initiator handelt. 
SCSI verfügt über einen auf den Laufwerken integrierten Controller, ist jedoch nach einem anderen Konzept als IDE aufgebaut. SCSI wird über einen SCSI-Host-Adapter  an den Systembus angeschlossen. SCSI ist nicht auf einen PC-Systembus wie ISA, EISA oder PCI beschränkt, da es auch Host-Adapter für Apple (Nubus) oder Sun (SBus) gibt. SCSI verfügt ursprünglich über 8-Bit und ein SCSI-Protokoll, wobei der Host-Adapter  als SCSI-Einheit ein Bit belegt. Die Busbreite variiert von 8 Bit (SCSI-1, SCSI-2, Differential SCSI, Ultra SCSI und Ultra-2 SCSI) bis 16 Bit (Wide SCSI, Ultra Wide SCSI, Ultra2 Wide SCSI, Ultra-160 SCSI und Ultra-320 SCSI). 

Der Datenaustausch kann zwischen 2 SCSI-Einheiten ohne die CPU erfolgen, oder zwischen Host-Adapter und Festplatte. Einer SCSI-Einheit ist eine Adresse zugeordnet. Diese ist über einen Jumper oder einen DIP-Schalter  (Dual In-line Package) eingestellt. Der Host-Adapter belegt i.d.R. die Adresse Nr. 7 (einstellbar im SCSI-BIOS-Setup). Bei der 1-Byte-wertigen Adresse entspricht Bit 0 der Adresse SCSI ID 7 und Bit 7 der Adresse SCSI ID 0.  Die Konfiguration der SCSI-Einheiten beinhaltet neben der Identifikation durch die ID-Nummer auch die Priorität der SCSI-Geräte. 

Davon zu unterscheiden ist die LUN (Logical Unit Number). Eine LUN wird von einem SCSI-Controller angesteuert, z.B. bei Verwaltung mehrerer Laufwerke in einem RAID-System. Der RAID-Controller stellt dann die Verbindung  zum SCSI-Bus her. Da einem sochen RAID-Controller mehrere Laufwerke zugeordnet sind, werden diese durch die LUN unterschieden.  Die LUN ist zusätzlich zur ID-Nummer konfiguriert. Um die Konfiguration zu vereinfachen und automatisieren wird SCAM (SCSI Configured Automatically) eingesetzt, daß sich jedoch in der Praxis nicht hat durchsetzen können. Ein SCSI-Strang  muss mit exakt 2 Terminatoren (ein Terminator für jedes physikalische Leitungsende) abgeschlossen werden. Auf der Seite des HBA besteht meist die Möglichkeit, eine Seite des Busses mit einem Steckterminator zu terminieren.  Am besten verwendet man aktive Terminatoren statt passive. Aktive Terminatoren sind bei LVD-Bussen (Low Voltage Differential) notwendig. SCSI-Einheiten werden über ein 50-poliges Flachbandkabel mit 50-poligen Steckern angebunden  Ab Ultra Wide SCSI gibt es 68-polige Kabel (auch bei Ultra2 Wide SCSI, Ultra-160 SCSI und Ultra-320 SCSI). Grundsätzlich möglich ist auch ein Kabel mit 25 gedrillten Leitungspaaren. Dabei muss eine Masseleitung stets um die Signalleitung gewickelt sein. 

Der SCSI-Controller befindet sich auf der SCSI-Einheit, die über einen Host-Bus-Adapter (HBA) an den System-Bus angeschlossen ist. Der HBA befindet sich entweder auf dem Mainboard oder wird über eine SCSI-Karte eingesteckt. 

Parallele SCSI-Schnittstellen
SCSI-1 (narrow SCSI), Fast SCSI, Wide SCSI, Fast Wide SCSI, SCSI-2, Ultra-SCSI, SCSI-3, Ultra-2 SCSI, Ultra2 Wide SCSI, Ultra-160 SCSI (Ultra3 SCSI), Ultra-320 SCSI 

Serielle SCSI Schnittstellen
SAS (Serial Attached SCSI), SSA (Serial Storage Architecture), SSA 40, FC-AL 1 Gb (Fibre Channel Arbitrated Loop), FC-AL 2Gb, FC-AL 4Gb, iSCSI (internet SCSI, 'eye-scuzzy'):  die Netzwerklösung welche TCP als Übertragungsprotokoll verwendet.

SCSI-Standards
SCSI-1, SCSI-2, SCSI-3 SPI (SCSI Parallel Interface), SPI-2, SPI-3, SPI-4.   

SCSI-Protokoll
Das SCSI-Protokoll stellt eine parallele Schnittstelle zur Verfügung zwischen den angeschlossenen SCSI-Einheiten (Peripherie) und dem Bus. In der SCSI-Terminologie erfolgt die Kommunikation zwischen dem SCSI-Initiator und  dem SCSI-Target, wobei der SCSI-Initiator Befehle an das Target sendet, welches dann antwortet. Befehle werden über einen Command Descriptor Block (CDB) gesendet. Der CDB besteht aus einem 1-Byte Befehlscode sowie einigen Kommandozeilenparametern.  SCSI-Protokolle flossen in die umfassende SCSI-3 Spezifikation ein, und wurden weiterentwickelt zu SAS (Serial Attached SCSI). SAS bietet eine serielle Schnitstelle (serial SCSI) und damit Geschwindigkeitsvorteile, Hot-Swapping-Fähigkeit und bessere  Fehlerisolierung. SAS löste Ultra-320 SCSI ab, welches auch aus diesem Grund nicht mehr zu Ultra-640 weiterentwickelt wurde.  Das SCSI-Protokoll verfügt über eine große Anzahl, auch von der SCSI-Technologie grundsätzlich unabhängiger Spezifikationen, wie einen eigenen Befehlssatz oder physikalische Beschaffenheiten der Bustechnologie und der Signalsteuerung. SCSI-Kommandos  wurden daher auch von anderen Übertragungstechnologien wie Fibre Channel, InfiniBand, iSCSI, ATAPI, FireWire, Serial Storage Architecture, SAS oder USB adaptiert. 
Siehe auch:    SCSI-Standard   Alan-Shugart   SCSI-Geschichte   SCSI-3-Architektur   Serial-Attached-SCSI   S-ATA   Host-Bus-Adapter   RAID   Festplatte   Adaptive-Active-Filtering

  CASE

Computer-Aided Software Engineering. CASE-Tools sind Software Entwicklungssysteme, die dem Entwickler Hilfen zur Erstellung komplexer Software an die Hand geben. Dabei wird der Entwicklungsprozess in Phasen unterteilt: Analyse, Konzeption,  Programmierung, Testen, Debugging und manchmal auch Re-Design (Anpassen an aktuelle Anforderungen, Erweiterungen, verschiedene Releases mit unterschiedlichem Funktionsumfang, neue oder andere Funktionen oder Features, Ausrichtungen, Zielgruppen,  Änderungen der anwendungsbezogenen fachlichen Paradigma). Unterstützt werden kann auch das Schnittstellenmanagement zu Fremdsoftware. Moderne integrierte CASE-Tools bieten Möglichkeiten des Prototyping und eine  Vorgehensweise nach dem Wasserfallmodell der Softwareentwicklung (Initialisierung, Analyse, Entwurf, Realisierung, Einführung, Nutzung). Hilfsmittel sind grafische Visualisierungen der Entwicklungsprozesse, die Unterstützung der objektorientierten  Strukturierung durch UML (Unified Modeling Language), der Strukturierten Analyse (SA), des Strukturierten Design (SD) sowie der Datenmodellierung durch das Entity-Relationship-Modell (ERM). CASE-Werkzeuge sind oft  in integrierten Entwicklungsumgebungen (Integrated Development Environment (IDE)) enthalten. Beispiele für IDEs sind: Eclipse, Emacs, KDevelop, Zend Studio, Sun One Studio, Dev-C++, Anjuta, BabyDevelop, Code::Blocks oder Lazarus.

Bekannte  CASE-Tools sind:
UML: Simple System (SiSy), objectiF, Rational Rose
SA/SD: ARIS (Architektur integrierter Informationssysteme) der IDS-Scheer AG, case/4/0 der Firma  microTool, Simple System
ERM: Simple System, case/4/0, ORACLE Designer.
Weitere Tools sind Innovator der MID Enterprise Software Solutions GmbH ( → UML, SA/SD und ERM) sowie OlivaNova.                                           
Siehe auch:    UML   Strukturierte-Analyse   Ablaufdiagramm   Repository   datenbank   Normalform   

  Festplatte
Seagate Barracuda 7200.12 Festplatte 1 TB  intern  8.9 cm ( 3.5 Seagate Barracuda 7200.12 Festplatte 1 TB  intern  8.9 cm ( 3.5
Eine Festplatte (englisch: Hard Disk Drive, HDD) ist eines der wichtigsten magnetischen Speichermedien eines Computers. Auf der Festplatte wird das Betriebssystem und alle Programme installiert. Innerhalb des Gehäuses der Festplatte befinden sich  auf einer Achse mehrere Scheiben, die beidseitig magnetisiert sind. Weiterhin sind da mehrere Schreib-Lese-Köpfe, welche für die Lese- und Schreibvorgänge der Daten zuständig sind. Die heute üblicherweise bei Desktop PCs und Servern verwendeten  Festplatten haben eine Grösse von 3,5 Zoll. In Notebooks werden 2,5" Platten verbaut. Die Speicherkapazität bei 3,5" SATA Platten liegt bei 2000 GB (2 TB), bei 2,5" SATA Platten bei 750 GB (Stand 2. Quartal 2010). Zu einem RAID zusammen geschlossen  kann man auch ein Vielfaches von 2 TB erzielen. Im Labor sind schon grössere Festplattenkapazitäten erzeugt worden: 3 - 5 TB. 

Schnittstellen von Festplatten: IDE, parallel ATA (EIDE), SCSI, SAS, Fibre Channel, S-ATA
Festplatten sind mit dem Computer über eine Schnittstelle  verbunden. Dazu verfügen sie über eine Controller Elektronik. Das ist üblicherweise IDE (Integrated Device Electronics) oder ATA (Advanced Technology Attachment), Enhanced-IDE  (EIDE oder ATA-2), S-ATA (Serial Advanced Technology Attachment), S-ATA II oder SCSI (Small Computer System Interface: auch Ultra-SCSI, Ultra-320 SCSI, SCAM (SCSI Configured Automatically), SAS (Serial Attached SCSI)).  IDE Platten rotieren mit Geschwindigkeiten von 5.400, 7.500 oder 10.000 Umdrehungen pro Minute (U/m). SCSI Platten rotieren mit 10.000-15.000 U/m, 2,5" Platten mit 4.200 -7200 U/m.  Mehrere Festplatten können auch im Verbund laufen: RAID-Systeme können redundante Datenstrukturen aufbauen, die Ausfallsicherheit und Transferrate erhöhen oder grössere logische Laufwerke aufbauen. Es gibt mehrere RAID-Level.  Man kann Festplatten auch über ein Fibre-Channel Interface anschliessen. Die Festplatte wird dann über einen Fibre-Channel-Controller, einen Fibre-Channel Hub oder einen Fibre-Channel-Switch gesteuert.  Von der Industrie wurde der Begriff P-ATA (Parallel ATA) eingeführt um S-ATA von den Standards ATA (ATA I - III), ATA/ATAPI 4-7, ATA-8, ACS-2 und EIDE abzugrenzen. ATA/ATAPI (ATA with Packet Interface) stellt eine Ausbaustufe  des ATA Protokolls dar. Bei ATAPI wurde ATA ausgebaut um SCSI-Befehle durch den Packet-Befehl des ATA-Protokolls ausführen zu können.    Der ATA-Standard wurde durch das T13 Technical Committee des International Committee for Information Technology Standards (INCITS) entwickelt. Normiert wurde er durch die ANSI.  Bei dem ATA-Stecker handelt es sich um einen 40-poligen, zweireihigen Stecker mit einem Pinabstand von 2,54 mm.  Die modernen ATAPI-5-Kabel mit 80-Adern besitzen farbige Kennzeichnungen: Blau für Controller/PC, Grau für Device 1 (Slave), IDE 1 sowie Schwarz für Device 0 (Master) IDE 0. 

Funktionsweise von Festplatten
Die Daten werden auf rotierenden Magnetscheiben, meist Aluminium-Legierungen, gespeichert. Der Schreib/Lesekopf (Magnetkopf) befindet sich nur wenige Mikrometer über der Oberfläche der Magnetscheibe.  Bei moderneren Festplatten beträgt dieser Abstand nur 20 Nanometer, bei Festplatten mit Perpendicular-Recording-Technik sogar nur 10 Nanometer. Der Magnetkopf schwebt auch (Bodeneffekt) aufgrund des Luftpolsters,  das durch Reibung der Luft an der rotierenden Scheibenoberfläche erzeugt wird, über der Magnetscheibe. Heute setzt man MR-Leseköpfe (magnetoresistiver Effekt) oder GMR-Leseköpfe (Riesenmagnetowiderstand, Spintronik) ein.  Der Schreib/Lesekopf wird von dem Aktuator bogenförmig geführt. Je nach Kapazität werden Ober- und Unterseite der Magnetscheibe zur Speicherung verwendet. Pro Scheibe sind dann zwei Magnetköpfe erforderlich.  Die Grundeinheit der Magnetscheibe ist der Sektor mit 512, 1024 oder 4096 Bytes. Sektoren sind in konzentrischen Datenkreisen angeordnet. Diese Kreise sind von aussen nach innen mit Zahlen versehen und bilden so die Spuren. Als Spur 0 bezeichnet man den  äusseren Kreis der Magnetplatte. Die Spuren wiederum sind in Sektoren aufgeteilt. Das Lesen eines Sektors erfolgt, indem der Magnetkopf in der Spur positioniert wird und abwartet, bis der entsprechende Sektor unter ihm auftaucht.  Da man heute mehrere Magnetscheiben übereinander verwendet und beide Oberflächen einsetzt, befinden sich Spuren mit derselben Nummerierung stets übereinander. Darum bezeichnet man diese als Zylinder, so dass durch Angabe der Sektornummer,  Zylindernummer bzw. Spur- und Kopfnummer der jeweiligen Plattenoberfläche ein Sektor eindeutig identifizierbar ist.  Ein Sektor besteht aus einem Header und einem Datenfeld. Im Header befindet sich ein Datenseparator der über Informationen des Kodierverfahren verfügt. Weiterhin befinden sich dort die Zylinderkopf- und Sektornummern. 

Technische Merkmale
Die Aluminium-Legierungen der Magnetscheiben sind oberflächenbehandelt und verfügen neben einer dünnen Magnetschicht über eine Eisen- und Kobaltschicht von einem Mikrometer. Die Magnetscheiben müssen Belastungen aushalten  können und über eine geringe elektrische Leitfähigkeit verfügen. Moderne HDDs werden, um eine höhere Datendichte zu erreichen, besputtert mit einem entsprechenden Material wie z.B. einer Kobalt-Chrom-Platin-Legierung.  Um die Magnetscheibe vor mechanischen Schäden zu bewahren, kann man die magnetische Schicht mit einer harten Kohlenstoffschicht (carbon overcoat) überziehen. Vor dem Schreiben werden die Daten kodiert nach verschiedenen Vefahren:  Group-Coded Recording (GCR), Modified Frequency Modulation (MFM), Run Length Limited (RLL) oder nach moderneren Verfahren wie Partial Response/Maximum Likelihood (PRML) oder Extended PRML. Heutige Festplatten verfügen über Perpendicular Recording:  die magnetischen Dipolmomente, die i.V.m. der Kodierung wie PRML ein logisches Bit darstellen, stehen nicht parallel zur Rotationsrichtung sondern senkrecht (perpendicular). Die Datendichte erhöht sich.
Siehe auch:    ATA   ATAPI   S-ATA   S-ATA-II   SCSI   Fibre-Channel   NCQ   Extended-Partial-Response-Maximum-Likelihood   NAS   RAID

  PHP
Funktionsdiagramm zeigt die Ausführung der serverseitigen Scriptsprache PHP auf dem Webserver, der Browser-Client empfängt nur HTML. Funktionsdiagramm zeigt die Ausführung der serverseitigen Scriptsprache PHP auf dem Webserver, der Browser-Client empfängt nur HTML.
PHP Hypertext Preprocessor. PHP ist eine Server-Script-Sprache. Wenn ein Browser eine PHP-Seite von einem PHP-fähigen Server abruft, interpretiert der Server den PHP-Code und sendet den resultierenden HTML-Code an den Browser.  Der Browser empfängt nur HTML- und nicht PHP-Code. PHP arbeitet oft mit der Open Source Datenbank MySQL zusammen. Dies ist in der Bilderserie dokumentiert, auch ein Insertion Sort Algorithmus in PHP ist dabei.  Auch die objektrelationale Datenbank (ORDBMS) PostgreSQL kann durch PHP angesteuert werden. Eine Serversoftware, die oft eingesetzt wird um PHP und MySQL zu unterstützen ist der Apache-HTTP-Server  oder der IIS (Microsoft Internet Information Server bzw. Internet Information Services). Für PHP gibt es vorgefertigte Bibliotheken und Module, wie z. B. PEAR (PHP Extension and Application Repository).  In PHP können Templates verwendet werden. Ausserdem existiert ein Vielzahl von PHP-Template-Engines: z. B. Smarty oder vLIB.  Dadurch werden dem Entwickler Standard-Aufgaben abgenommen. Es gibt Basisobjekte und Pakete, die in den Bibliotheken wiederverwendet werden und Redundanzen in der Softwareentwicklung vermeiden.  PEAR ist Open Source und kann auf dem Web-Server installiert werden. Um PHP sicherer zu machen wurde das Hardened PHP Projekt von Stefan Esser ins Leben gerufen. Hardened PHP ist ein Patch, der auf dem Webserver  installiert wird und auch Schutz für den Zend Memory Manager sowie Zend Linked Lists bietet. Weiterhin soll Hardened PHP vor internen Exploits durch speziell formatierte Strings schützen (http://www.hardened-php.net/).  Suhosin ist ein weiter fortgeschrittenes Schutzpaket für PHP-Scripts. Suhosin schützt den Webserver und den Anwender vor Fehlern in PHP-Scripts und im PHP-Kern.

Zend Technologies 
Die Zend-Engine ist ein PHP-Parser und -Compiler von Zend Technologies Ltd. Zend Technologies Ltd. wurde von Zeev Suraski und Andi Gutmans in Israel gegründet. Die Zend Engine übernimmt die Codeaufbereitung: sie compiliert den PHP-Code vor  der Ausführung um Fehler rechtzeitig abzufangen. Nur fehlerfreie Seiten werden von der Zend-Engine an die PHP-Ausführungsschicht übergeben.  Der Zend Optimizer optimiert den PHP-Code und wird zur Ausführung von PHP-Code verwendet, der mit dem Zend Guard verschlüsselt wurde.  Das Zend Studio ist eine Entwicklungsumgebung (Integrated Development Environment, IDE) für PHP. Das Zend Studio wurde für die Java Plattform entwickelt und ist für Windows, Linux und Mac OS X ausgelegt.

Superglobals 
Allgemein kann empfohlen werden, die Globalen Variablen (register_globals) auf "Off" zu setzen. Um die PHP Scripte sicherer zu machen, empfiehlt es sich weiterhin, externe Variablen mit den Superglobals abzufangen ($_POST, $_GET, $_Server, $_ENV,  $_REQUEST, $_SESSION, $_FILES, $_COOKIE, $GLOBALS, $php-errormsg). Siehe auch: http://de3.php.net/reserved.variables. Um eine Manipulation von Variablen zu verhindern sollte man Plausibilitätsprüfungen für die Variablen einbauen. 

Konfiguration und XAMPP
Ab der Version 5 von PHP kann die Registrierung der langen von PHP vordefinierten Arrays ($HTTP-POST-VARS, $HTTP_GET_VARS usw.) mit der Konfigurationsoption register_long_arrays abgeschaltet werden.  Die Administration von Einstellungen erfolgt beim Apache-HTTP-Server in der php.ini und der config.inc.php sowie bei MySQL in der my.cnf und beim MySQL-Administrationsprogramm phpMyAdmin ebenfalls in der Datei config.inc.php.  Die PHP und MySQL Einstellungen kann man sich durch die Funktion phpinfo(); anzeigen lassen. Diese ist auch als Menüpunkt im XAMPP bzw. WAMPP, LAMPP oder MAMPP Paket zu finden: diese Pakete enthalten den Apache Server,  PHP, MySQL (und Perl) und lassen sich leicht aufspielen und administrieren. Sie sind erhältlich für Windows, Linux und Mac OS X. XAMPP ist zu finden, z. B. bei www.apachefriends.org.

PHP Optimierung
Um bei umfangreichen  PHP-Scripts und Projekten Neuübersetzungen zu vermeiden, kann man OpCode-Caches verwenden. OpCode-Caches speichern den erzeugten PHP Code und müssen als Erweiterung eingebunden werden.  Die Performance kann bei PHP auch durch die "Autoloading" Methode gesteigert werden. Mit der Funktion __autoload können längere Klassendefinitionen eingebunden werden und müssen nicht über eine lange Liste von include-Anweisungen geladen werden.  Bekannte OpCode-Caches sind der Zend-Optimizer, eAccelerator, IonCube-Accelerator und der Alternative PHP Cache. Ausser dem Zend Optimizer sind das alles Open Source und Freeware-Programme.  PHP wird seit Version 4 unter der PHP License lizenziert. Bis Version 3 war PHP unter der GPL lizenziert, die Zend-Engine (der neue PHP-Parser) ist jedoch nicht GPL-fähig. PHP kann unter der PHP License frei heruntergeladen und verwendet werden.  Das GIMP-Toolkit (GTK+), eine freie Komponentenbibliothek, stellt für PHP eine Grafik-API zur Verfügung. PHP ist prozedural angelegt, verfügt jedoch auch über Komponenten der Objektorientierten Programmierung  (OOP). Objekt-Variablen werden seit Version 5 (Zend Engine 2) nur noch als Referenz auf das Objekt und nicht mehr als das Objekt selbst abgelegt. Weiterhin ergänzt wurden Destruktoren und Klassen-Eigenschaften (Private, Protected, Public).  Die meisten Bibliotheken sind in PHP noch prozedural angelegt. Seit Version 5 ist die DOM-API objektorientiert. PHP 5.1 bietet zudem mit den PHP Data Objects (PDO) eine OOP-Erweiterung die den einheitlichen Zugriff auf  unterschiedliche SQL-Datenbanken (MySQL, PostgreSQL, SQLite) ermöglicht. Eine einheitliche Unicode-Unterstützung soll mit der Zend Engine ab PHP Version 6 erfolgen. Threads und Namensräume fehlen in PHP. Auch förmliche Variablen-Deklarationen  können in PHP nicht erzwungen werden. Mit PHP Version 5.2 wird eine verbesserte Speicherverwaltung bereitgestellt, sowie Filter-Erweiterungen, JSON (JavaScript Object Notation), ZIP-Archiv-Unterstützung, und eine objektorientierte  Datumserweiterung mit DataTime und DataTimeZone.

JSON
JSON ist ein sprachenunabhängiges Format zum Datenaustausch zwischen Anwendungen. JSON wird in einer Textform notiert und ist für Rechner und menschliche Anwender einfach  lesbar. Datenstrukturen werden mit JSON kompakt notiert und kommen im Vergleich zu XML mit wesentlich weniger Overhead aus. JSON ist ein Datenaustauschformat und implementiert in PHP, Java, C, C#, JavaScript, Perl, Smalltalk, Python und Ruby.
Siehe auch:    Apache-HTTP-Server   MySQL   Webserver   PEAR   Script   Perl   Apache-Tomcat   Open-Source   JSON   Objektorientierte-Programmierung

  Direct-Attached-Storage

Mit Direct Attached Storage (DAS) oder Server Attached Storage (nicht zu verwechseln mit Serial Attached SCSI (SAS)) werden Server und Workstations oder PC um Massenspeicher (meist Festplatten, HDD)  erweitert. Der Unterschied zu NAS (Network Attached Storage) besteht hauptsächlich darin, daß es eine feste Verbindung direkt zwischen der DAS-Device und dem Server gibt, und diese nicht via z.B. einen Netzwerkrouter läuft.  Deswegen ist die Verbindung zu Dritt-Computern in einem LAN oder Netzwerk meist nur über freigegebene Ordner und den direkt angeschlossenen Server möglich. Wenn der direkt angeschlossene Server down ist, gibt es also auch für die  anderen Server keinen Zugriff auf die DAS-Device. Vorteil des DAS-Konzeptes ist jedoch, das die DAS-Device i.d.R. genau so schnell ist wie die internen Massenspeicher des Servers. Bei SAN (Storage Attached Network)  ist oft eine leichte Leistungsminderung durch das dazwischen geschaltete Netzwerk zu erwarten. 

Anschlussmöglichkeiten bei DAS 
Die Verbindung des Servers zur DAS-Device erfolgt oft über SCSI oder SAS (Serial Attached SCSI). Kostengünstig ist SAS to SATA, da SATA-Platten inzwischen günstig zu erwerben sind und sich meist ein  SATA-Controller im Server befindet. Diese Lösung ist jedoch nicht so performant wie SCSI to SCSI. Möglich ist auch SCSI to SAS oder SAS to SATA.  Eine Verbindung kann auch durch Block-orientierte Transferprotokolle wie USB, FireWire, ATA/ATAPI oder eSATA hergestellt werden.  DAS stellt eine Punkt-zu-Punkt Verbindung her, und kann daher nicht die Verbindungen nutzen, die über netzwerkbasierte Protokolle funktionieren wie Fibre Channel, iSCSI, FICON oder ESCON (Enterprise Systems Connection). 
Damit andere Teilnehmer eines LANs Zugriff auf die DAS-Device haben, ohne über den direkt angeschlossenen Server zu gehen, gibt es die Möglichkeit, die DAS-Device an 2 Server an zu schliessen, z.B. über eine shared SCSI-Implementierung,  die man auch mit einem Cluster-Dateisystem ausstatten kann, damit ein geteilter Zugriff auf die Platten möglich ist. Bis zu 4 Server können direkt adressiert werden bei einer Shared-Storage-Lösung mit z.B. XEN oder VMware ESX. 

RAID bei DAS
Es ist sehr sinnvoll RAID-Controller zu verwenden, um einen RAID-Betrieb zwischen den Platten zu ermöglichen. Die RAID-Controller können, müssen sich aber nicht in demselben Gehäuse wie die Platten befinden. Auch der Einsatz von JBOD  (Just a Bunch Of Disks: kein RAID-System im strengen Sinne, da die Datenredundanz fehlt → der RAID-Controller wird so konfiguriert daß mehrere Festplatten als eine behandelt werden oder Verbindung mehrerer Festplatten zu einem logischen  Verbund durch eine Volume Management Software ohne Einsatz des RAID-Controllers oder Einsatz des RAID-Controllers als Festplatten-Controller, der mehrere HDDs verwaltet und einzeln ansprechen kann) ist möglich.  Um zusätzliche Datensicherheit zu gewährleisten kann das Netzteil als Hot-Swap Netzteil realisiert und der RAID-Controller dupliziert werden, so daß er Failover-Eigenschaften hat.                           
Siehe auch:    SAN   NAS   SCSI   S-ATA   Virtualisierung   Festplatte   Server   RAID   Hot-Swapping   Fibre-Channel