Heim > Artikel > Backend-Entwicklung > Ist es in PHP möglich, die Antwort nur an einen bestimmten Benutzer zu verzögern, ohne andere Benutzer zu beeinträchtigen?
Da kürzlich der Verdacht aufkam, dass das Projekt in böswilliger Absicht manipuliert wurde, habe ich vor, seine Reaktion zu verzögern, wenn ich den Verdacht habe, dass jemand betrügt. Die Zugriffsgeschwindigkeit anderer Personen darf dadurch jedoch nicht beeinträchtigt werden. Soweit ich weiß, öffnet PHP für jede Anfrage einen Thread. Wenn es beispielsweise 1.000 Besuche gleichzeitig gibt, ist die Schnittstellenantwort für 999 davon langsam Links? Wird die Anfrage schneller sein? Immer noch die gleiche Geschwindigkeit?
Im Moment ist Schlaf die einzige Methode, die mir einfällt, ich weiß nicht, ob sie zuverlässig ist oder nicht...
Ich habe bereits eine Möglichkeit, den Benutzer zu identifizieren, aber ich möchte wissen, wie ich die Anfrage des Benutzers verzögern kann
Als Antwort erwähnte ein Freund, dass die Rückgabe eines HTTP-Fehlercodes möglich ist, aber ich beschränke die Art und Weise, einen Benutzer zu beurteilen, hauptsächlich die IP und seinen Identifikationscode. Beide können jederzeit geändert werden, falls er die IP ändert .Ich weiß, dass nur seine IP eingeschränkt ist. Danach muss er nur noch die dynamische IP verwenden, um seinen Identifikationscode jederzeit zu ändern, und er kann weiterhin meine Schnittstelle putzen, und die verzögerte Rückgabe wird berücksichtigt dass der Server von ihm heruntergefahren wurde, solange er zufrieden ist
Da in letzter Zeit der Verdacht besteht, dass das Projekt böswillig manipuliert wurde, plane ich, seine Antwort zu verzögern, wenn ich den Verdacht habe, dass jemand betrügt. Die Zugriffsgeschwindigkeit anderer Personen darf dadurch jedoch nicht beeinträchtigt werden. Soweit ich weiß, öffnet PHP für jede Anfrage einen Thread. Wenn es beispielsweise 1.000 Besuche gleichzeitig gibt, ist die Antwort der Schnittstelle für 999 davon langsam Links? Wird die Anfrage schneller sein? Immer noch die gleiche Geschwindigkeit?
Im Moment ist Schlaf die einzige Methode, die mir einfällt, ich weiß nicht, ob sie zuverlässig ist oder nicht...
Ich habe bereits eine Möglichkeit, den Benutzer zu identifizieren, aber ich möchte wissen, wie ich die Anfrage des Benutzers verzögern kann
Als Antwort erwähnte ein Freund, dass die Rückgabe eines HTTP-Fehlercodes möglich ist, aber ich beschränke die Art und Weise, einen Benutzer zu beurteilen, vor allem die IP und seinen Identifikationscode. Beide können jederzeit geändert werden, falls er die IP ändert .Ich weiß, dass nur seine IP eingeschränkt ist. Danach muss er nur noch die dynamische IP verwenden, um seinen Identifikationscode jederzeit zu ändern, und er kann weiterhin meine Schnittstelle putzen, und die verzögerte Rückgabe wird berücksichtigt dass der Server von ihm heruntergefahren wurde, solange er zufrieden ist
Senden Sie den HTTP 104-Statuscode (das legendäre „Verbindungs-Reset“).
<code>$Code = 104; $Text = 'connection reset by peer'; http_response_code($Code); $Protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1'); header($Protocol . ' ' . $Code . ' ' . $Text);</code>
Natürlich kann Nginx es tun: 444 (Server-Timeout-Antwort) oder 499 (Client kann nicht warten und schließt aktiv die Verbindung) senden: IP ermitteln und dann return 444;
.
Die Schlafmethode ist unzuverlässig. Nach dem Schlafen kann sie keine Dienste mehr für andere Anfragen bereitstellen. Sie haben nur eine begrenzte Anzahl von PHP-Prozessen und jeder Blockierungsvorgang kann den Durchsatz beeinträchtigen. Wie können Sie schlafen?
Es gibt ein weiteres Problem mit dem verzögerten Rückgabeplan. Da es sich um einen böswilligen Pinsel handelt, muss er eine Möglichkeit haben, mehrere Anfragen gleichzeitig zu senden. Daher kann eine verzögerte Rückgabe die Anzahl seiner Anfragen nicht grundsätzlich verringern ein Rückstand an Anfragen auf dem Server. Wenn Sie Ihren eigenen Client oder Ihre eigene Webseite verwenden, ist es schwierig, „böswillig“ zu sein.
Es gibt auch eine Möglichkeit, die Rückgabe zu verzögern, die Anfrage asynchron zurückzugeben und den Prozess trotzdem nicht zu blockieren.
Zusammenfassend lässt sich sagen, dass es besser ist, ihm 4xx oben zu geben.
Kennen Sie die IP-Adresse?
Zugriffshäufigkeit begrenzen