Php 为什么可以';没有客户端就不能控制服务器吗?
好吧,在服务器存在的这么多年里,你是说如果我想让脚本在服务器上每n秒运行一次,你能做的最好的事情就是给我一个糟糕的cron任务?必须有一种内置于编程语言或其他东西中的方法,使我能够每隔一段时间运行函数、脚本或其他东西,而无需客户端向服务器发送请求。有什么语言可以让你这么做吗?节点js?那么大公司如何进行服务器维护呢?为什么php可以不断地监听请求和Webhook,但却无法控制它设计用来控制的东西,而不需要其他人发送请求 为什么没有客户端就不能控制服务器 它可以。服务器可以响应客户端发送的请求,但也可以做其他事情 好吧,在服务器存在的这么多年里,你是说如果我想让脚本在服务器上每n秒运行一次,你能做的最好的事情就是给我一个糟糕的cron任务 我不知道是谁对你说的,但那根本不是真的。即使是shell脚本也可以做到这一点Php 为什么可以';没有客户端就不能控制服务器吗?,php,node.js,server,client,Php,Node.js,Server,Client,好吧,在服务器存在的这么多年里,你是说如果我想让脚本在服务器上每n秒运行一次,你能做的最好的事情就是给我一个糟糕的cron任务?必须有一种内置于编程语言或其他东西中的方法,使我能够每隔一段时间运行函数、脚本或其他东西,而无需客户端向服务器发送请求。有什么语言可以让你这么做吗?节点js?那么大公司如何进行服务器维护呢?为什么php可以不断地监听请求和Webhook,但却无法控制它设计用来控制的东西,而不需要其他人发送请求 为什么没有客户端就不能控制服务器 它可以。服务器可以响应客户端发送的请求,但
必须有一种内置于编程语言或其他东西中的方法,使我能够每隔一段时间运行函数、脚本或其他东西,而无需客户端向服务器发送请求 一定有,一定有。参见下面的示例 有什么语言可以让你这么做吗 是的,有很多这样的语言。例如,JavaScript从1995年开始就有了
setTimeout()
和setInterval()
节点js
是的,Node.js可以做到这一点和其他许多事情。由于您特别询问了Node.js,以下是您可以使用的模块soem:
POST请求http://localhost:1234/script.php
如果确实如此,您可以做一些事情让它按您的意愿每n秒运行一次:
(1) 你可以把curl-xposthttp://localhost:1234/script.php
在crontab中
(2) 可以制作如下所示的shell脚本:
#!/bin/sh
while true; do
curl -X POST http://localhost:1234/script.php
sleep 10
done
#!/usr/bin/env node
const request = require('request');
setInterval(() => request.post('http://localhost:1234/script.php'), 10000);
(3) 您可以制作如下节点程序:
#!/bin/sh
while true; do
curl -X POST http://localhost:1234/script.php
sleep 10
done
#!/usr/bin/env node
const request = require('request');
setInterval(() => request.post('http://localhost:1234/script.php'), 10000);
(4) 您可以使用任何其他允许您运行独立程序的语言
这是一种让PHP脚本定期运行的方法。我不确定这是一个问题还是一句废话。此外,我认为您可能会对客户机-服务器体系结构的工作方式感到困惑。“一种内置于编程语言中的方式,或者让我每隔一段时间运行一个函数、脚本或其他东西的方式”-您指的是循环?是的,大多数编程语言都有无限循环
while(true){//loopity loop!}
您似乎很不安。@E.SK有时无限循环是保持服务器活动的原因。像nginx或Node.js这样的服务器基于事件循环的概念。这个循环是无限的。如果不是这样,服务器将停止服务请求,这将破坏服务器。您还没有真正回答我的问题。Javascript是客户端。我需要做cron作业所做的事情,每x秒运行一次php,但不需要cron作业。我不相信大公司依赖cron作业,这似乎不够合法。从本质上讲,是否有一种服务器端语言不必像您描述的那样充当请求处理程序as@E.SKjs是服务器端的,它是JavaScript。请参阅:好的,那么为什么NodeJS可以每隔一段时间控制服务器,而php不能?(无客户机请求)@E.SK,因为在Node中编写的程序是独立的程序,可以持续运行,可以在需要的时候做任何事情,并且它们恰好响应客户机的请求。另一方面,PHP脚本不是独立的长时间运行的程序,但Apache或nginx之类的服务器会在每个请求到特定的路由时调用它们,该路由由特定的PHP脚本处理,然后脚本运行,完成为单个请求提供服务的任务并完成,只会在以后为另一个请求调用。