我正在寻找VB doevents的PHP等价物

我正在寻找VB doevents的PHP等价物,php,doevents,Php,Doevents,我正在寻找VB doevents的PHP等价物。 我用VB编写了一个实时分析包,并使用doevents发布到操作系统。 Doevents允许我保留在内存中并连续运行,而无需填满内存,并允许我响应用户输入。 我已经用PHP重写了这个包,我正在寻找同样的doevents特性。 如果它不存在,我可以重新安排自己并退出。 但我目前不知道如何做到这一点,我认为这将增加更多的开销。 谢谢你,gerardg我上次用VB写东西已经快10年了,我记得,doevents函数允许应用程序在密集处理过程中向处理器屈服,

我正在寻找VB doevents的PHP等价物。 我用VB编写了一个实时分析包,并使用doevents发布到操作系统。 Doevents允许我保留在内存中并连续运行,而无需填满内存,并允许我响应用户输入。 我已经用PHP重写了这个包,我正在寻找同样的doevents特性。 如果它不存在,我可以重新安排自己并退出。 但我目前不知道如何做到这一点,我认为这将增加更多的开销。
谢谢你,gerardg

我上次用VB写东西已经快10年了,我记得,doevents函数允许应用程序在密集处理过程中向处理器屈服,通常允许其他系统事件触发——最常见的是WM_PAINT,这样你的UI就不会出现挂起的情况

我认为PHP没有这样的功能——您的脚本将作为单个进程运行,并在完成或达到默认的30秒超时时结束


如果您像大多数Windows程序员一样考虑线程,并且需要生成不止一个脚本实例,那么您可能应该首先考虑

我上次用VB写东西已经快10年了,我记得,doevents函数允许应用程序在密集处理过程中向处理器屈服,通常是允许触发其他系统事件——最常见的是WM_PAINT,这样您的UI就不会出现挂起的情况

我认为PHP没有这样的功能——您的脚本将作为单个进程运行,并在完成或达到默认的30秒超时时结束


如果您像大多数Windows程序员一样考虑线程,并且需要生成不止一个脚本实例,那么您可能应该首先考虑

我不完全确定您希望仿效doevents的哪些方面,所以这里有很多对您有用的东西

您可以在脚本顶部使用来启用隐式输出缓冲区刷新。这意味着,每当脚本调用echo或print或任何用于显示内容的东西时,PHP都会自动将其发送到用户的浏览器。您还可以在每次调用后使用来显示某些内容,其行为更像VB中的Application.DoEvents,以保持UI处于活动状态,但必须在每次输出某些内容时调用

当然,如果您的脚本已经使用了输出缓冲区,那么您可以在刷新之前构建缓冲区的副本,使用

如果您需要允许脚本比平时运行更长的时间,可以使用设置更长的tiemout。如果需要更多内存,并且您有权编辑.htaccess文件,请输入以下代码并编辑该值:

php_value memory_limit 64M
这将内存限制设置为64 MB

要同时运行多个脚本,可以使用启动另一个脚本


如果我遗漏了一些关于DoEvents的重要信息,请告诉我,我将尽力帮助您使其发挥作用。

我不完全确定您希望仿效DoEvents的哪些方面,因此这里有几乎所有对您有用的内容

您可以在脚本顶部使用来启用隐式输出缓冲区刷新。这意味着,每当脚本调用echo或print或任何用于显示内容的东西时,PHP都会自动将其发送到用户的浏览器。您还可以在每次调用后使用来显示某些内容,其行为更像VB中的Application.DoEvents,以保持UI处于活动状态,但必须在每次输出某些内容时调用

当然,如果您的脚本已经使用了输出缓冲区,那么您可以在刷新之前构建缓冲区的副本,使用

如果您需要允许脚本比平时运行更长的时间,可以使用设置更长的tiemout。如果需要更多内存,并且您有权编辑.htaccess文件,请输入以下代码并编辑该值:

php_value memory_limit 64M
这将内存限制设置为64 MB

要同时运行多个脚本,可以使用启动另一个脚本


如果我遗漏了一些关于DoEvents的重要信息,请告诉我,我会尽力帮助您解决。

usleep是您需要的。。将程序执行延迟给定的微秒数

你要找的就是美利浦。。将程序执行延迟给定的微秒数

PHP是为异步按需处理而设计的。然而,它可以被迫成为一个有点黑客背景任务

由于PHP是作为单个线程运行的,您不必担心让CPU做其他事情,因为这已经得到了处理。如果不是这样,那么web服务器一次只能提供一个页面,而所有其他请求都必须排在队列中。您将需要编写某种外观,直到出现某种可检测的情况时才会过期 例如,在DB中设置的“现在请退出”消息或其他内容

正如其他人所指出的,你需要设置时间限制;如果usleep在每个循环中占用大量CPU,它可能会阻止代码运行过快。但是,如果您同时使用数据库连接,那么脚本的大部分时间实际上是等待数据库的脚本—到目前为止,脚本的最大开销

我见过使用screen创建PHP工作线程并将其分派到后台任务。只要您没有超时或退出的会话(例如,当web浏览器关闭时),其他方法也可以工作。启动脚本以检查脚本是否每x分钟或每x小时运行一次的cron可使您从强制存在和/或系统重新启动中自动恢复


TL;DR:doevents已经融入到PHP中,您不必担心它。

PHP是为异步按需处理而设计的。然而,它可以被迫成为一个有点黑客背景任务

由于PHP是作为单个线程运行的,您不必担心让CPU做其他事情,因为这已经得到了处理。如果不是这样,那么web服务器一次只能提供一个页面,而所有其他请求都必须排在队列中。您将需要编写某种永不过期的外观,直到出现某种可检测的情况,如您在DB中设置的“现在请退出”消息或其他内容

正如其他人所指出的,你需要设置时间限制;如果usleep在每个循环中占用大量CPU,它可能会阻止代码运行过快。但是,如果您同时使用数据库连接,那么脚本的大部分时间实际上是等待数据库的脚本—到目前为止,脚本的最大开销

我见过使用screen创建PHP工作线程并将其分派到后台任务。只要您没有超时或退出的会话(例如,当web浏览器关闭时),其他方法也可以工作。启动脚本以检查脚本是否每x分钟或每x小时运行一次的cron可使您从强制存在和/或系统重新启动中自动恢复


TL;DR:doevents已经融入到PHP中,您不必担心它。

您是作为网页还是作为cron作业触发代码?PHP不用于实时处理。除非您使用的是多任务协作系统,例如Win 3.x,否则在某个时候脚本的时间片将耗尽,并失去对它的控制。回答BugFinder问题:我正在从网页按钮启动代码。回答Mark B:感谢您的观点。下面的旋风提供了set_time_limit$time,这可能会延长我的时间。但延长时间不同于连续运行。下面的贾胡法也得出了同样的结论。我目前正在我的ISP机器上开发。我正在等待我自己的服务器能够测试和安排我自己回来。谢谢。您是将代码作为网页触发,还是作为cron作业触发?PHP不用于实时处理。除非您使用的是多任务协作系统,例如Win 3.x,否则在某个时候脚本的时间片将耗尽,并失去对它的控制。回答BugFinder问题:我正在从网页按钮启动代码。回答Mark B:感谢您的观点。下面的旋风提供了set_time_limit$time,这可能会延长我的时间。但延长时间不同于连续运行。下面的贾胡法也得出了同样的结论。我目前正在我的ISP机器上开发。我正在等待我自己的服务器能够测试和安排我自己回来。谢谢。回答杰胡法:谢谢。你明白我的问题。你和Marc B都说PHP不具备这种功能。看起来我可以用你发送的过程控制函数重新安排我自己的时间。当我在自己的服务器上运行时,我将测试Cyclone对set_time_limit$time、其他函数和您的控制函数的建议。我在我的ISP的机器上开发,不能像我所希望的那样控制系统。在我的服务器到达后,我将带着更新返回这里,我可以进行实验。谢谢。回答杰胡法:谢谢。你明白我的问题。你和Marc B都说PHP不具备这种功能。看起来我可以用你发送的过程控制函数重新安排我自己的时间。当我在自己的服务器上运行时,我将测试Cyclone对set_time_limit$time、其他函数和您的控制函数的建议。我在我的ISP的机器上开发,不能像我所希望的那样控制系统。在我的服务器到达后,我将带着更新返回这里,我可以进行实验。谢谢。回答:谢谢。你当然已经研究过了。我仍在开发我的ISP服务器,在服务器到达之前无法控制一切。我想通过你的建议,我可以减少我需要的次数
重新安排我的流程。我将练习您推荐的功能,稍后在我自己的服务器上实现这些功能,希望保留在内存中,而不是重新安排自己的时间。我认为,根据您的建议和Jahufar的过程控制功能列表,如果我必须重新安排时间,我可以实现DoEvents功能。谢谢你。@gerardg:很高兴我能帮上忙!让我们知道进展如何!回答:谢谢。你当然已经研究过了。我仍在开发我的ISP服务器,在服务器到达之前无法控制一切。我想通过你的建议,我可以减少重新安排流程的次数。我将练习您推荐的功能,稍后在我自己的服务器上实现这些功能,希望保留在内存中,而不是重新安排自己的时间。我认为,根据您的建议和Jahufar的过程控制功能列表,如果我必须重新安排时间,我可以实现DoEvents功能。谢谢你。@gerardg:很高兴我能帮上忙!让我们知道进展如何!usleep不像doevents那样处于活动状态,因为它只会延迟执行,而不会将控制权交还给其他进程。我打开一个页面选项卡来测试一个php,该php输出js代码以使用计数器值更改文档标题的内容,并使用usleep以每0.01秒延迟一次,但在该测试程序仍在更新文档标题时,我无法单击其他页面选项卡。我正在查找的usleep与doevents不同,它只会延迟执行,而不会产生响应控制返回到其他进程。我打开一个页面选项卡来测试一个php,它输出js代码,用计数器值改变文档标题的内容,并使用usleep以每0.01秒延迟一次,但是当这个测试程序仍在更新文档标题时,我不能单击其他页面选项卡。我在找什么