Für den Administrator, Programmierung

PHP-Schnittstelle

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 öffen
  • c16_recread() – Datensatz lesen
  • c16_selrun() – Selektion durchführen
  • c16_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.

Keine Kommentare

Kommentar abgeben