草庐IT

php - 在 Windows 上使用 PHP fork /线程的最佳方法是什么?

我有一个php脚本,用于检查许多(数千)站点的更新。有时(随着站点数量的增加更频繁),我在更新其中一个站点时遇到执行超时,整个脚本都付诸东流了。我能想到的最好的想法是fork每个更新,所以如果它死了,整个更新就会继续。从我收集到的信息来看,PHP线程似乎不是什么值得依赖的东西,尤其是在Windows平台上(不幸的是我必须在Windows平台上工作)。我考虑过使用curl作为fork机制,但服务器的成本(时间和处理能力)会不会高得多?我很高兴听到一些关于PHPfork/线程的想法和经验...谢谢,奥马尔。 最佳答案 如果您打算使用cU

c - Windows、fork 和 execv

我收到了一个Unix工具,我想在Windows下运行/编译。看了之后,我看到它使用了fork和execv等等。我现在想了解它的作用以及如何在Windows中实现它。代码的作用比这里要求的要多,所以请不要评论这段代码是否有意义。pid=fork();if(pid==0){execv("/usr/bin/java",args);}如果我正确地解释了这一点,那么它只会执行类似使用args数组中提供的参数调用java的操作。所以在Windows中,这可以通过system()或CreateProcess之类的东西轻松实现(我没有阅读如何,只知道这是可以做到的)。但这是我的问题:如果我理解正确,这

windows - spawn 和 fork 有什么区别?

在启动新进程的上下文中,我遇到过spawn和fork,但它们有什么区别?在从unix到Windows的处理/解释方式上有什么不同吗? 最佳答案 fork是Unix中的标准系统调用,Windows中不存在。clone密切相关(在Linux上,它们使用相同的内部函数实现)。它用于简单地复制当前正在执行的进程。在Windows上,CreateProcess用于通过启动磁盘上的可执行文件来创建新进程。Windows有一个系列spawn函数,而POSIX指定posix_spawn.这些完成了人们通常想做的事情:执行一些程序。

windows - (fork/waitpid) 等待子进程列表,但每次子进程完成时都会中断等待

我正在使用fork生成许多并行运行多个任务的子进程。在我的例子中,简单地等待循环中的所有子进程是不够的,因为如果我列表中的第一个进程是最后一个完成的,那么我的waitpid调用将阻塞,直到该进程完成。我希望我的waitpid调用在每次进程完成时唤醒。原因是我想立即检查已完成的子进程的退出代码以确定该进程是否成功,以便我可以取消仍在运行的任何子进程。在我的例子中,如果任何子进程返回非零退出代码,让它们继续(可能持续数小时!)是没有意义的,因为这将指示错误,即使是一个错误也会使整个工作变得毫无意义。(编辑:我知道这不是waitpid实际工作的方式,但我正在寻找类似的东西。)现在,我可以通过

c# - C# 中的 fork 概念

既然C#支持线程,有没有办法在C#中实现fork的概念?提前致谢.... 最佳答案 这更多是.NET/CLR的问题,而不是C#的问题。通常,这是底层操作系统的问题。Windows不支持类似fork()的生成新进程的语义。此外,fork()与多线程支持无关。fork()的语义涉及复制原始进程地址空间的内容。我认为这是一种过时的进程创建方法,在Windows世界中几乎没有任何空间,因为它涉及很多安全和操作系统架构问题。从.NET的角度来看,fork()的根本问题是复制和/或共享非托管资源(文件句柄、同步对象、窗口句柄(!)、等)在旧流程

php - 激活 pcntl_fork() ubuntu xampp

我在使用php中的pcntl_fork()函数时遇到一些问题。我正在使用XAMPP并尝试使用该功能,但一直显示此错误:Calltoundefinedfunctionpcntl_fork()我在Google和XAMPP论坛上挖掘了一些东西,但找不到任何完全有用的东西。我发现一些论坛说我需要启用一些名为的配置--enable-pcntl我看到了phpinfo()并且我在配置命令中有那个选项。你能帮帮我吗?提前致谢埃尔卡斯 最佳答案 @Elkas,我不知道你的XAMPP版本,但我电脑上的XAMPP1.8.0带有pcntl扩展名。您可以尝试

php - 我怎样才能强制执行最大数量的 fork child ?

编辑:我已将此C标记为希望得到更多响应。我更感兴趣的是理论而不是特定的语言实现。因此,如果您是C程序员,请将以下PHP视为伪代码,并随时使用C语言编写的答案进行回应。我试图通过让PHPCLI脚本并行而不是串行执行其任务来加速它。这些任务彼此完全独立,因此它们开始/完成的顺序无关紧要。这是原始脚本(请注意,为清楚起见,所有这些示例都被剥离):我设法让它在$items上与pcntl_fork()并行工作如下图:0){//parent$pids[]=$pid;}else{//childdo_stuff_with($item);exit(0);}}foreach($pidsas$pid){pc

PHP- 需要一个 cron 用于用户注册时的后台处理...(或 fork 进程)

每当新用户在我的网站上注册时,我都想做一些预处理以缩短他们将来的搜索。这涉及30到2分钟的处理时间。显然,当他们在注册时或在他们访问的任何PHP页面上单击提交按钮时,我不能这样做。但是,我希望在他们注册后的5分钟内(或更短时间内)完成此操作。Cron路线我认为这需要在cron作业中,如果是这样,我应该如何设置cron作业?如果是这样,我的cron行每2分钟运行一次应该是什么样的,我如何确保我没有相同的cron作业与下一个重叠?事件/分支路线-首选如果我可以在不中断用户体验的情况下向我的服务器抛出一些事件,或者从用户注册中fork出一个过程(而不是cron作业),我该怎么做?

php - 在 fork 的 child 上调用 rand/mt_rand 会产生相同的结果

我正在编写一个需要在PHP中执行并发任务的脚本。我进行了一些测试并遇到了奇怪的结果。我正在使用pcntl_fork生成一个child。父进程只等待子进程完成。我正在生成5个child,每个child运行一个生成随机数(秒数)的函数并休眠那么长时间。出于某种原因-所有child都生成相同的数字。这是一个代码示例:private$_child_count=0;privatefunction_fork_and_exec($func){$cid=++$this->_child_count;$pid=pcntl_fork();if($pid){//parentreturn$pid;}else{/

PHP内存泄漏和 fork

我试图避免PHP中的内存泄漏。当我创建一个对象并在最后取消设置时,它仍在内存中。未设置的看起来像:$obj=NULL;unset($obj);这仍然无济于事。我的问题是当我fork进程并且对象将在子线程中创建和销毁时会发生什么?这会一样吗?或者有什么其他方法可以释放内存吗?这是导入脚本,它将消耗几千兆内存。 最佳答案 PHP5.3有一个垃圾收集器,可以收集循环引用。可能值得一试:gc_enable();classA{publicfunction__construct(){$this->data=str_repeat("A",1024