我正在使用 PHP-CPP 库创建一个简单的 PHP 模块。
我这样做是为了限制每个 php 脚本文件的每个 IP 地址的进程。我已经找到了我需要的所有东西的解决方案,除了一件事:我不能干净地停止脚本。
如果您查看脚本,它有 exit(0); ..如果我使用例如 Php::echo(); 对于编写一些标题和 HTML,该结果不会返回到 Web 浏览器(也不是 telnet)。
你知道一种方法来回显一些标题和正文然后在不执行最终脚本的情况下终止脚本吗?
非常感谢 !
#include <phpcpp.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
extern "C" {
PHPCPP_EXPORT void *get_module() {
static Php::Extension extension("dosguard", "0.9");
extension.onShutdown([]() {
system("rm -r /dev/shm/dosguard-*");
});
extension.onRequest([]() {
std::string inode = Php::call("fileinode", Php::SERVER["SCRIPT_FILENAME"]);
std::string ip = Php::SERVER["REMOTE_ADDR"];
int time = Php::call("time");
std::string shm = "/dev/shm/dosguard-"+inode+"@"+ip+".time";
int saved = Php::call("file_get_contents", shm);
if(saved >= time) {
//////////////////////////////////////////
exit(0);
//////////////////////////////////////////
} else {
if(saved == NULL) {
saved = time;
}
else {
saved = time + 1;
}
Php::call("file_put_contents", shm, saved);
}
});
return extension;
}
}