使用 cron 任务加载 php 页面

使用 cron 任务加载 php 页面

我在创建子域后使用 cron 作业重新加载 httpd 服务。我遇到的问题是,当重新加载时,注册用户的页面会抛出服务器错误。

我想知道是否可以通过另一个 cron 任务来解决这个问题。

所以我的逻辑是:

创建 .conf 文件后,httpd 重新加载,然后将用户带回到主页的 DocumentRoot。

因此在使用中它将是:

用户注册后,会自动返回domain.com

答案1

做一个优美在 apache 上重新启动,这将允许子进程在重新加载配置之前完成当前请求。

答案2

“加载一个 php 页面...”

这是否意味着您正在尝试通过 HTTP 调用它?

从一开始这就不是一个好主意——这意味着你可能会暴露一些功能,而这些功能可能会被那些不打算访问它的人访问。

重新加载我的 httpd 服务

那么它是以 root 权限运行的?这真是个坏主意。

从您的描述来看,您似乎试图为用户提供创建自己的域的功能。更好的方法是使用通配符 vhost 定义,然后使用 mod_rewrite 将动态映射路径映射到新目录。

但如果失败,最好的方法是将其作为服务器上的 setuid root 脚本实现(内置身份验证以及网页上的身份验证)并从网页调用它。

....如果该过程是由 Web 请求启动的,那么为什么中间要使用 cron?当然,如果 cron 作业不通过 HTTP 访问 php 脚本,您将获得权限分离,但这样会使事情变得比需要的更困难,并在服务器上引入了不必要的延迟/负载。

答案3

这是解决这个问题的错误方法。

正确的方法是使用某种软件“路由器”。我实际上不是指 IP 路由器,而是指 URL 重写类型的路由器。

因此,您的应用程序会监听任何内容*.domain.com,然后将其交给正确的用户应用程序,而不是进行那些繁琐的 apache 重新加载废话。

我最近在 Nginx 上做了类似的事情。

server_name *.domain.com
if ($host ~* "(.*)?\.?domain\.com"){
                set $a $1;
                rewrite ^/?$ /sites/$a/index.html last;
}

基本上,对于 domain.com 下的任何子域名,它都会映射到$DOCROOT/sites/$subdomain/index.html

因此,要添加新的子域,我所需要做的就是在 sites/“subdomain”下创建一个目录,然后就可以立即访问它。

相关内容