4D v16.3Execute on server |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Execute on server
Execute on server
Die Funktion Execute on server startet einen neuen Prozess auf dem Server-Rechner (aufgerufen im Client/Server-Betrieb) oder auf demselben Rechner (aufgerufen im Einzelbetrieb) und gibt die Prozessnummer für diesen Prozess zurück. Mit dieser Funktion starten Sie eine Serverprozedur. Weitere Informationen dazu finden Sie im 4D Serverhandbuch im Abschnitt Serverprozeduren. Rufen Sie Execute on server auf einem Client-Rechner auf, gibt der Befehl eine negative Prozessnummer zurück. Rufen Sie die Funktion auf dem Server-Rechner auf, gibt sie eine positive Prozessnummer zurück. Beachten Sie, dass Aufrufen von New process auf dem Server-Rechner dasselbe ausführt wie Aufrufen von Execute on server. Konnte der Prozess nicht erstellt werden, z.B. weil der Speicher dafür nicht ausreicht, gibt Execute on server den Wert Null (0) zurück und es wird ein Fehler generiert. Sie können diesen Fehler mit ON ERR CALL in einer Fehlerverwaltungsmethode ausfindig machen. Methodenname ist der Name der Methode, die im Prozess gestartet werden soll. Im Parameter Stapel können Sie die Größe des Stapelspeichers angeben. Im Stapelspeicher werden Methodenaufrufe, lokale Variablen, Parameter in Unterroutinen und gestapelte Datensatze angehäuft.
Hinweis: Der Stapelspeicher ist NICHT der Gesamtspeicher des Prozesses. Prozesse teilen den Speicher auf für Datensätze, Interprozessvariablen usw., Prozessvariablen werden in einem Extraspeicher abgelegt. Der Stapelspeicher hält nur lokale Variablen, Methodenaufrufe, Parameter in Unterroutinen und gestapelte Datensätze. Hinweis für 64-bit 4D Server: Der Stapelspeicher für einen Prozess, der auf einem 64-bit 4D Server ausgeführt wird, benötigt mehr Speicher als ein 32-bit 4D Server (in etwa doppelt soviel). In Einklang mit den oben angegebenen Schätzungen emfehlen wir im Normalfall mindestens 128.000 Bytes, und 400.000 Bytes zum Verwalten einer anpassbaren Aufrufkette. Denken Sie daran, diesen Parameter zu prüfen, wenn Ihr Code zum Ausführen auf einem 64-bit Server dienen soll. Sie übergeben den Namen des neuen Prozesses in Prozessname. Im Einzelplatz erscheint dieser Name in der Liste der Prozesse des Runtime Explorer. Er wird vom Befehl PROCESS PROPERTIES zurückgegeben, wenn er auf diesen neuen Prozess angewendet wird. Im Client/Server-Betrieb erscheint dieser Name im Hauptfenster von 4D Server in der Liste Serverprozeduren in Blau. Warnung: Machen Sie im Gegensatz zu New process mit der Funktion Execute on server den Prozess NICHT durch das vorangestellte Dollarzeichen lokal. Das funktioniert nur im Einzelplatzbetrieb, da Execute on server hier als New process agiert. Im Client/Server-Betrieb ruft das einen Fehler hervor. Sie können für die Prozessmethode Parameter übergeben, und zwar genauso wie für eine Unterroutine. Lediglich Ausdrücke vom Typ Zeiger und Arrays können Sie nicht übergeben. Sobald die Ausführung im Kontext des neuen Prozesses startet, erhält die Prozessmethode die Parameterwerte in $1, $2, etc. Hinweis: Übergeben Sie Parameter in der Prozessmethode, müssen Sie auch Prozessname übergeben. In diesem Fall können Sie ihn nicht weglassen. Übergeben Sie als Parameter oder zurückzugebenden Wert ein 4D Objekt (C_OBJECT), wird das JSON Formular in UTF-8 für den Server verwendet. Enthält das Objekt C_OBJECT Zeiger, werden die dereferenzierten Werte und nicht die Zeiger selbst gesendet. Geben Sie diesen Parameter an, erhält 4D die Anweisung, zuerst zu prüfen, ob bereits ein Prozess Prozessname vorhanden ist. Ist dies der Fall, startet 4D keinen neuen Prozess und gibt die Prozessnummer des Prozesses Prozessname zurück. Folgendes Beispiel zeigt, wie Sie den Datenimport im Client/Server-Betrieb entscheidend beschleunigen können. Mit der nachfolgenden Methode Regular Import können Sie prüfen, wie lange der Import von Datensätzen mit dem Befehl IMPORT TEXT auf der Arbeitsstation dauert: ` Projektmethode Regular Import Bei regulären Importdaten zeigt 4D Client das Durchlaufen der Textdatei an, und erstellt dann für jeden Datensatz einen neuen Datensatz, füllt die Felder mit den importierten Daten und sendet den Datensatz an den Server-Rechner, damit er der Datenbank hinzugefügt wird. Auf diese Weise gehen viele Anfragen über das Netz. Diese Operation können Sie über eine Serverprozedur optimieren, die den Vorgang lokal auf dem Server-Rechner ausführt. Der Client-Rechner lädt das Dokument in ein BLOB, übergibt das BLOB als Parameter und startet so eine Serverprozedur. Die Serverprozedur speichert das BLOB in ein Dokument auf der Festplatte des Server-Rechners und importiert das Dokument dann lokal. Der Datenimport wird mit der Geschwindigkeit einer Einzelplatz-Version ausgeführt, da die meisten Anfragen über das Netz eliminiert wurden. ` Projektmethode CLIENT IMPORT Die Projektmethode SERVER IMPORT ausgeführt als Serverprozedur: ` SERVER IMPORT Project Method Mit diesen beiden Projektmethoden in einer Datenbank können Sie einen Datenimport über eine Serverprozedur ausführen. Schreiben Sie z.B.: CLIENT IMPORT(->[Table1];"Import") Mit einigen Benchmarks werden Sie entdecken, dass Sie mit dieser Methode Datensätze bis zu 60 Mal schneller importieren können als über regulären Import.
Siehe auch
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
Geändert: 4D 2004.3 ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||