PHP – rekursives Akronym für "PHP Hypertext Preprocessor" – ist eine Skriptsprache, die hauptsächlich zur Programmierung dynamischer Web-Inhalte verwendet wird. Dabei
liegen die Skripte auf einem Web-Server, der den PHP-Interpreter einbindet. Der Interpreter führt die Skripte aus und generiert damit die Web-Inhalte.
Mit der PHP-Schnittstelle von CONZEPT 16 können Sie in Ihren PHP-Skripten sogar auf CONZEPT 16-Datenbanken zugreifen und sie in Ihre Web-Applikation einbinden.
Funktionsweise
Die PHP-Schnittstelle wird als Erweiterung (engl. Extension) in den PHP-Interpreter integriert und erweitert den PHP-Funktionsumfang um einen Satz von Funktionen zum
Zugriff auf CONZEPT 16-Datenbanken. Dazu gehören unter anderem:
c16_connect()
– Datenbank öffenc16_recread()
– Datensatz lesenc16_selrun()
– Selektion durchführenc16_call()
– CONZEPT 16-Funktion ausführen
Mit diesen Funktionen ist es beispielsweise möglich, den Inhalt einer Tabelle auf einer durch PHP generierten Web-Seite auszugeben:
<html>
<body>
<h1>Eissorten</h1>
<?php
// CONZEPT 16-Konstanten einbinden
include('php_c16_def.php');
// Datenstrukturkonstanten definieren
define('ICN.T.IceCreamNames', 100); // Tabelle: Eissortennamen
define('ICN.K.ID', 1); // Schlüssel: ID
// Datenbankverbindung herstellen
$connection = c16_connect(
'myServerName',
'myServerPassword',
'myAreaName',
'myUserName',
'myUserPassword'
);
// Verbinden erfolgreich
if (c16_error($connection) === C16_OK)
{
// Array für Feldinhalte definieren
$fields = array(
'ICN.iID' => NULL,
'ICN.aName' => NULL
);
// Array zur Übertragung von Datensatzpuffern setzen
c16_fldset($connection, $fields);
// Tabellenkopf ausgeben
echo "<table>\n", "<tr><th>ID</th><th>Name</th></tr>\n";
// Datensätze lesen
for
(
// Ersten Datensatz lesen
$errorloop = c16_recread(
$connection, ICN.T.IceCreamNames, ICN.K.ID, _RecFirst);
// Datensatz gelesen
$errorloop < _rNoRec;
// Nächsten Datensatz lesen
$errorloop = c16_recread(
$connection, ICN.T.IceCreamNames, ICN.K.ID, _RecNext);
)
{
// Übertragung der Datensatzpuffer in Array
c16_fldget($connection, $fields);
// Tabellenzeile ausgeben
echo '<tr><td>', $fields['ICN.iID'], '</td><td>',
htmlspecialchars($fields['ICN.aName']), '</td></tr>', "\n";
}
// Tabellenende ausgeben
echo "</table>\n";
}
// Verbinden nicht erfolgreich
else
// Fehlertext ausgeben
echo c16_errortext($connection);
// Datenbankverbindung schließen
c16_close($connection);
?>
</body>
</html>
Mit einem ansprechenden Stylesheet versehen, könnte die dabei generierte Web-Seite wie folgt aussehen:
Installation
Alle Varianten der PHP-Erweiterung werden bei der Installation von CONZEPT 16 über die Installationsroutine durch Auswahl der Komponente "PHP-Client" in das
Unterverzeichnis "PHP" der CONZEPT 16-Installation entpackt.
Der Name der PHP-Erweiterungen setzt sich aus der unterstützten PHP-Version, dem Systemtyp (32- oder 64-Bit) und der plattformabhängigen Dateiendung (".dll" für
"Dynamic Link Library" unter Windows-Systemen und ".so" für "Shared Object" unter Linux-Systeme) zusammen.
Beispiele
php5.4_c16_x32.dll
PHP-Version: 5.4.x
Systemtyp: 32-Bit
Plattform: Windows (.dll)php5.3_c16_x64.so
PHP-Version: 5.3.x
Systemtyp: 64-Bit
Plattform: Linux (.so)
Im Unterverzeichnis "Scripts" sind PHP-Skripte enthalten, die als Beispiel dienen und die Verwendung der PHP-Schnittstelle erläutern.
Außerdem befindet sich in diesem Verzeichnis das PHP-Skript "php_c16_def.php", das CONZEPT 16-Konstanten enthält. Das Skript muss in die eigenen PHP-Skripte, die die Funktionen der PHP-Schnittstelle verwenden, eingebunden werden.
Thread-Sicherheit
Neben der PHP-Version, dem Systemtyp und dem Betriebssystem sind PHP-Erweiterungen auch von der Thread-Sicherheit der PHP-Installation abhängig.
Bei der Windows-Version der Web-Umgebung "XAMPP" mit dem Webserver "Apache" wird beispielsweise die thread-sichere Variante von PHP verwendet.
Bei der Installation von PHP unter Linux kommt hingegen typischerweise die nicht-thread-sichere Variante zum Einsatz.
Bis einschließlich zur CONZEPT 16-Version 5.7.01 haben wir die PHP-Erweiterungen für Windows als thread-sichere (thread safe) Variante und für Linux als nicht-thread-
sichere (non-thread safe) Variante mitgeliefert.
Mit der nächsten CONZEPT 16-Version liefern wir zusätzlich eine nicht-thread-sichere Variante für Windows mit, wie sie zum Beispiel für den Betrieb mit dem Webserver "Internet Information Services" (IIS) benötigt wird.
Konfiguration
Ein einfacher Weg, die Konfiguration einer gegebenen PHP-Installation zu ermitteln besteht im Aufruf der Funktion phpinfo()
innerhalb eines PHP-Skriptes.
Beispiel
<?php phpinfo(); ?>
Dabei wird eine Informationsseite mir allen Parametern der PHP-Umgebung erzeugt. Auf dieser Informationsseite können Sie unter anderem die Version und die Thread-Sicherheit der PHP-Installation ablesen. Außerdem können Sie die verwendete Einstellungsdatei (php.ini) sowie alle darin enthaltenen Einstellungen einsehen.
In der Einstellung "extension_dir" ist das Verzeichnis der Erweiterungen hinterlegt, in das die zur PHP-Umgebung passende Variante der PHP-Schnittstelle kopiert oder verschoben werden muss.
Beispiel
extension_dir=C:\PHP\ext
Zusätzlich muss die PHP-Erweiterung in der Einstellungsdatei mit der Einstellung "extension" eingetragen werden.
Beispiel
extension=php5.4_c16_x32.dll
Nach einem Neustart des Webserver-Prozesses wird bei der erfolgreichen Konfiguration der PHP-Erweiterung auf der Informationsseite ein Abschnitt mit der Überschrift
"CONZEPT 16" angezeigt, der unter anderem über die Version der PHP-Schnittstelle informiert.
Ab diesem Zeitpunkt kann die PHP-Schnittstelle wie beschrieben verwendet werden.