我使用xampp php apache server
我不能
我想要
我有什么方法可以做这些事情或者我应该尝试查看任何其他服务器或套接字编程是唯一的方法吗?
答案 0 :(得分:1)
这有点复杂。
我想要
run php as service where php may run without being connected to client php execution can be triggered using http request by client php (continuous or triggered) have full access to the resources php can send the data from the resources to the client on response
第一件事很容易实现。只需将PHP作为命令行安装,并在无限循环中运行(命令行没有过期时间),或者可能更好地满足您的需求,如crontab服务。实现这一目标有几个实用程序;它们要么每隔X秒运行一次脚本,要么在脚本终止后立即重新启动它。
如果脚本以某种方式(例如通过数据库)检查它是否有“工作要做”,那么你的目标2也实现了:HTTP Web客户端脚本只需要在数据库中插入细节,它将是就好像Web服务器已经启动了主运行脚本一样。实际发生的事情是主脚本通常会立即终止(可能会暂停几秒钟,不会使服务器过载),但下次运行时,它会找到工作并做到。
然后,通过运行具有更多权限的主脚本,可以实现目标3。用户脚本不能“访问所有资源”,但可以谦虚地询问数据,主脚本(更安全)可以慷慨地允许读取这些数据 - 并写入客户端可能获得的数据库(或文件系统)它
最后,您的目标4可以通过读取数据并将其提供给客户端脚本的客户端浏览器来实现。
示例工作流程:
- 15:55:00 The master script runs. SELECT worktodo FROM thingstodo returns nothing
- 15:56:00 The master script runs. SELECT worktodo FROM thingstodo returns nothing
- 15:56:17 The client runs; it is a request for data from serial port.
- 15:56:17 The request is stored in the DB and gets ID 12345 and status "WAITING"
假设一 - 15:56:18客户端在写完“工作已排队,请稍候”后终止,并发送一个循环回自身的HTTP标头:
Location: http://mylocation/script.php?check=12345
假设二 - 15:56:19客户等待,比如十秒钟,为了以防万一,每秒都运行一次检查,看看工作是否完成。如果确实如此,则按照15:17:35进行;否则就像假设一样,说“我会回来”并且死了一个Location头。 - 15:56:20由于Location标题,客户端脚本会重新加载check = 12345。它连接数据库,看到12345的状态不是COMPLETED,显示“Working ...”动画,等待五秒钟,然后又死了一个位置:。
- 15:57:00 The master script gets awakened and finds there is one job in WAITING status; updates it in LOCKED status and places its own IP and PID in the proper fields, then decodes the work details, sees what needs to be done and does it.
- 15:57:33 The work is done and the row gets updated again; now STATUS=COMPLETED
- 15:57:35 Meanwhile the client gets called again, but this time it finds COMPLETED, so happily fetches the data and shows it to the customer, also deleting the row not to clutter the DB.
其他可能性: - 主脚本,找到填写在作业行中的电子邮件字段,向用户发送带有适当链接的电子邮件。 - 主脚本实际上大部分时间处于休眠状态,绑定到端口XYZ上的套接字,并且客户端脚本在需要完成某些操作时“唤醒”它。这减少了请求和答案之间的延迟。
答案 1 :(得分:0)
运行php作为服务,其中php可以运行而无需连接到客户端
您可以使用cron task
运行PHP脚本