Dokumentation
IPS_GetScriptThread
array IPS_GetScriptThread (int $ThreadID)
Parameterliste
| ThreadID | ID des Threads |
Rückgabewert
Folgende Informationen stehen als key => value Paare zur Verfügung:
| Index | Typ | Beschreibung |
|---|---|---|
| ThreadID | integer | ID des Threads |
| ExecuteCount | integer | Anzahl der bisherigen Ausführungen in diesem Thread |
| ExecutionMin | integer | Kürzeste Ausführungsdauer in Millisekunden |
| ExecutionAvg | integer | Durchschnittliche Ausführungsdauer in Millisekunden |
| ExecutionMax | integer | Längste Ausführungsdauer in Millisekunden |
| StartTime | integer | Unix-Zeitstempel des Starts der aktuellen Ausführung, 0 wenn der Thread frei ist |
| Sender | string | Auslöser der aktuellen Ausführung (Wert von $_IPS['SENDER'], z.B. "RunScript" oder "TimerEvent"), leer wenn der Thread frei ist |
| SenderID | integer | ID des auslösenden Objekts (das Ereignis, die Zielinstanz oder das Skript), 0 wenn der Thread frei ist (ab Version 9.0) |
| FilePath | string | Was gerade ausgeführt wird: die Skriptdatei relativ zum Programmverzeichnis (z.B. "scripts/12345.ips.php"), bei Skripttext die ersten 100 Zeichen, bei PHP-Modulen die ausgeführte Funktion bzw. der Timer, bei Ablaufplänen RunID und Schritt; leer wenn der Thread frei ist |
| ScriptID | integer | ID des ausgeführten Skripts, 0 bei Skripttext oder wenn der Thread frei ist |
| PeakMemoryUsage | integer | Höchster Speicherbedarf einer Ausführung in Byte seit der letzten Speicherbereinigung |
| RetainedMemoryUsage | integer | Speicher in Byte, den der Thread zwischen den Ausführungen belegt hält, 0 nachdem ein unbenutzter Thread seinen Speicher freigegeben hat |
| MemoryCleanups | integer | Anzahl der Speicherbereinigungen. Überschreitet der Speicherbedarf einer Ausführung die Grenze ThreadMemoryCleanup (Standard 10 MB), gibt der Thread seinen Speicher danach frei |
Beschreibung
Die Funktion liefert Informationen über den Thread mit der ID ThreadID: die Statistik der bisherigen Ausführungen, den Speicherbedarf und, falls der Thread gerade beschäftigt ist, die aktuelle Ausführung. Existiert der Thread nicht, schlägt die Funktion mit "ScriptThread #... does not exist" fehl.
PHP-Skripte werden in einem festen Pool von Threads ausgeführt. Die Anzahl der Threads legt der Spezialschalter ThreadCount fest (Standard 50, mindestens 25), die Threads haben die IDs 1 bis ThreadCount. Innerhalb eines Skripts enthält die Systemvariable $_IPS['THREAD'] die ID des eigenen Threads.
Die IDs aller Threads liefert IPS_GetScriptThreadList, die Informationen mehrerer Threads auf einmal liefert IPS_GetScriptThreads.
Beispiel
// Informationen über den eigenen Thread
print_r(IPS_GetScriptThread($_IPS['THREAD']));
/* liefert z.B.:
Array
(
[ThreadID] => 3
[ExecuteCount] => 152
[ExecutionMin] => 0
[ExecutionAvg] => 12
[ExecutionMax] => 1530
[StartTime] => 1758880000
[Sender] => RunScript
[SenderID] => 12345
[FilePath] => scripts/12345.ips.php
[ScriptID] => 12345
[PeakMemoryUsage] => 2097152
[RetainedMemoryUsage] => 2097152
[MemoryCleanups] => 0
)
*/