![]() |
PHP: kann mir jem sagen, was hier nicht stimmt?
hi
habe folgenden Code aus einem Spamfool script entnommen: PHP-Code:
Fatal error: Call to undefined function: sem_get() in /******/*******/htdocs/******/*****/****.php on line 111 Sorry aber ich versteh die Fehlermeldung nicht ganz. Lt. div. Tutorials ist sem_get() eine definierte Funktion in PHP4 und die Syntax des Befehls scheint auch richtig zu sein. Weiß zufällig jem. was hier schief gelaufen ist? danke |
Note: This function does not work on Windows systems.
|
Ja, und?
Glaubst, ich arbeite auf Windows? :D |
Zitat:
(PHP 4 >= 4.2.0) |
Zitat:
|
Also nochmal ein wenig detailierter:
Ich habe das script hier gefunden und nach Anleitung installiert. Einen Alias habe ich nicht angelegt - stattdessen hab ich nur einen Link namens spamfool auf meine virtuelle domain gelegt. PHP ist in der Version 4.3.4 vorhanden. |
Was sagt ein
Code:
s1-iw:~$ php -m | grep sysvsem~ |
was steht in zeilennummer 111?
|
Zitat:
wenn ich php -m eingebe erhalte ich folgende Module [PHP Modules] ctype ftp gd interbase mysql overload pcre pgsql posix session standard tokenizer xml zlib [Zend Modules] |
Zitat:
PHP-Code:
|
Zitat:
Du kannst diese Funktionalität im Grunde aber auch weglassen, nur bist dann halt vor multiplen Zugriffen nicht geschützt. lg paux |
Zitat:
Ich werde diese Funktion aber Sicherheitshalber neu reinkompilieren, weil den Source Code möchte ich nicht ändern. :) Danke für die rasche Hilfe! |
Zitat:
Semaphore dienen dazu, den Zugriff mehrere prozesse auf eine Ressource (File, Shared Memory) zu synchronisieren. Mah, lernt die Jugend heutzutage gar nichts mehr? :confused: :heul: http://de.wikipedia.org/wiki/Semaphore_(Programmierung) |
Who cares?
Aber dann hat sich der liebe paux auch geirrt. Zitat:
|
Was gemacht wird mit einem Semaphor ist einfach: Systemprogrammierung. Rund um den Einsatz eines Semaphors spannt sich ein Verwaltungsprogramm, z.B. ein Spooler (Druckauftragsabarbeitungsprogramm).
Wenn Du selbst Semaphore benutzt, betätigst Du Dich also als Systemprogrammierer - nicht zu verwechseln mit Assemblerprogrammierer. Du musst also Routinen schaffen, die der Semaphorgesetzmäßigkeit des Verkehrsregelns nachgelagert sind, also Straßen (wie für Autos), Garagen (wie für Autos) etc., etc. Semaphore sind also die Verkehrsampeln und Verkehrsregeln zugleich durch Constraints (also Zusammenhänge) die mit den Semaphoren paarweise auftreten. Es gibt zwei Arten von Semaphoren: Den Mutex (mutual exclusive) und dem alternierenden Semaphor mit Hilfsmittel Warteschlange, der Prozessumreihungen durchführt, das was in Windows und Linux usw. die Grundlage für Prozessverwaltung darstellt - dem "präemptiven Multitasking" ... im Gegensatz zu kooperativem Multitasking wie es Windows 3.11 darstellt. Es musste in Windows 3.11 unbedingt die gesamte Windows Funktion verlassen werden UND eine neue Windows 3.11 API Funktion (außerdem noch alles in 16bit Adressraum gehalten) aufgerufen werden, bevor ein anderes Programm weiterarbeiten durfte bzw. konnte, weil erst dann festgestellt wurde durch Windows 3.11, daß die Zeitspanne für diesen Prozess bereits verkonsumiert wurde. Mutual heisst 'beiderseitig', exclusive heißt 'ausschließlich'. Was das ganze tatsächlich bedeutet ist: Stillschweigendes Sperren oder Binärer Vorrangszugriff. D.h. ein Semaphor dient der Kapselung von Ressourcezugriffen und damit dem Sicherstellen von nachvollziehbaren Systemzuständen, nicht jedoch Applikationszuständen, dafür sind wiederum file locks und memory locks in erster Linie und eben nicht Semaphore zuständig. |
@eAnic: Die Semaphore beschränken in meinem Script die gleichzeitigen Zugriffe auf höchstens 20 Stück. Das vermeidet, daß der Server bei allzu gierigen Spidern in die Knie geht.
lg |
So, ich hab nun php neu kompiliert und das script funktioniert nun wunderbar.
Vielen Dank für eure Hilfe! |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 09:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag