相关疑难解决方法(0)

父母退出后如何使子进程死亡?

假设我有一个只产生一个子进程的进程.现在,当父进程因任何原因(正常或异常,通过kill,^ C,断言失败或其他任何原因)退出时,我希望子进程死掉.如何正确地做到这一点?


stackoverflow上的一些类似问题:


关于Windows的 stackoverflow的一些类似问题:

c unix linux fork process

199
推荐指数
13
解决办法
15万
查看次数

发送POST请求而不等待响应?

我正在编写一个简单的REST服务,它响应来自客户端的请求.全部用PHP.

我担心的是,当我的服务器响应请求时,如果客户端发送回"ok"响应太慢,它最终可能会占用资源.

如何通过lib_curl发送POST请求,将其设置为不等待任何响应,而是在POST数据发送后立即退出?

这甚至可能吗?谢谢 !

php libcurl

28
推荐指数
3
解决办法
4万
查看次数

不等待来自AJAX请求的响应

假设我从jQuery向后端PHP脚本发出AJAX HTTP请求.请求发出后,PHP脚本开始运行并发挥其魔力.假设我转到另一个网站,远离原始AJAX请求的网站.同样,我在PHP脚本完成之前执行此操作,并有时间回复HTTP响应.即使我在获得HTTP响应之前切换到另一个网站,PHP脚本是否已完成运行并执行其操作?

所以顺序就是这样.

  • 我在网站www.xyz.com上
  • 我有一个jQuery处理程序,它启动了对blah.php的AJAX请求
  • blah.php开始运行
  • 我很快就去了www.abc.com网站,没有等到blah.php的回复

blah.php发生了什么事?执行还在继续吗?它停止了吗?我的意思是它没有机会回应......

javascript php ajax

9
推荐指数
2
解决办法
2386
查看次数

编写Linux shell脚本以安全地从终端分离程序

我正在尝试编写一个Linux shell脚本(最好是命名为bash)detach.sh,以便安全地从终端分离程序,这样:

  1. 调用:./detach.sh prog [arg1 arg2 ...].

  2. exec-able,例如.通过在shell中运行它:

    exec ./detach.sh prog [arg1 arg2 ...]
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过适当的引用(主要处理包含空格的参数).

  4. 丢弃输出(因为它们是不需要的).

  5. 不使用screen,tmux等等(与4相同的原因,加上不需要额外的保姆过程).

  6. 使用(合理地)可移植命令和程序,并且没有类似于start-stop-daemon特定于发行版的内容.

我想到了几种方法(#!/bin/bash为了简洁而忽略了shebang线):

  1. nohup:

    nohup "$@" >& /dev/null &
    
    Run Code Online (Sandbox Code Playgroud)
  2. disown:

    "$@" >& /dev/null &
    disown
    
    Run Code Online (Sandbox Code Playgroud)
  3. setsid:

    setsid "$@" >& /dev/null &
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用子shell:

    ("$@" >& /dev/null &)
    
    Run Code Online (Sandbox Code Playgroud)
  5. nohup/ setsid结合子壳:

    # Or alternatively:
    # (nohup "$@" >& /dev/null &)
    (setsid "$@" >& /dev/null &)
    
    Run Code Online (Sandbox Code Playgroud)

gedit用作测试程序(代替该 …

bash shell scripting

9
推荐指数
1
解决办法
5299
查看次数

PHP shell_exec等待脚本完成?

我有一个PHP脚本,它在数据库中查询要完成的作业列表,并根据它在数据库中找到的内容(基本上是一个进程队列)触发其他PHP脚本.

队列运行程序脚本执行的某些脚本可能需要30秒左右才能完成运行(生成PDF,调整图像大小等).

问题是shell_exec()在队列中,runner脚本调用处理脚本,但是不等待它们完成,导致队列没有完成.

队列转轮脚本:

#!/usr/bin/php
<?php
    // Loop through database and find jobs to be done
    shell_exec(sprintf("/root/scripts/%s.php", $row['jobName']));
?>
Run Code Online (Sandbox Code Playgroud)

工作脚本:

#!/usr/bin/php
<?php
    shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf");
    // Update database to mark job as completed
?>
Run Code Online (Sandbox Code Playgroud)

直接从命令行运行作业脚本,并创建PDF.

有想法该怎么解决这个吗?或者更好的方法来运行进程队列?

php queue shell-exec

7
推荐指数
1
解决办法
1万
查看次数

exec()在PHP中等待响应

可能重复:
php exec命令(或类似)不等待结果

我有一个页面,它运行一系列exec()命令,强制我的PHP脚本停止更改,直到收到响应.如何判断exec()不等待响应并运行命令?

我正在使用一个复杂的命令,它有一个后端系统我可以查询以检查状态,所以我不关心响应.

php linux exec

5
推荐指数
1
解决办法
4846
查看次数

从另一个内部生成PHP脚本.非blockning

我有一个PHP脚本,我需要从另一个PHP网页内执行.然而,对于第二个正常运行,第一个需要完全完成.基本上我需要第一页为第二个脚本生成一个新的进程/线程,它将在启动前等待1秒.

执行include会导致阻塞,导致阻止它工作,我无法让它开始使用exec

编辑:

应该澄清一下.这些页面没有输出,也没有通过Web界面连接.所有页面都由来自其他服务器的POST请求调用.


编辑2:

解决方案:让服务器请求页面在第一次返回后1秒钟直接向第二页发送请求.

php multithreading

5
推荐指数
1
解决办法
338
查看次数

防止 PHP 等待 mail() 函数

在我的 Web 应用程序中,当用户更改其帐户时,我调用 php mail() 函数向该用户发送电子邮件通知。执行此操作后,我发现帐户更改操作需要非常长的时间(> 20 秒)才能完成。我怀疑这是因为 PHP 等待 mail() 函数发送电子邮件。有没有什么办法不用等待就可以直接调用下一行代码?

谢谢,

保罗

php email apache2

3
推荐指数
1
解决办法
4003
查看次数

标签 统计

php ×6

linux ×2

ajax ×1

apache2 ×1

bash ×1

c ×1

email ×1

exec ×1

fork ×1

javascript ×1

libcurl ×1

multithreading ×1

process ×1

queue ×1

scripting ×1

shell ×1

shell-exec ×1

unix ×1