> 백엔드 개발 > PHP 튜토리얼 > PHP 다중 프로세스는 메모리에 상주하는 코드 문제를 해결합니다.

PHP 다중 프로세스는 메모리에 상주하는 코드 문제를 해결합니다.

WBOY
풀어 주다: 2016-07-25 08:58:33
원래의
2013명이 탐색했습니다.
  1. #!/bin/env php
  2. /** A example denoted muti-process application in php
  3. * @filename fork.php
  4. * @edit bbs.it-home.org
  5. * @version 1.0.0
  6. */
  7. /** 确保这个函数只能运行在SHELL中 */
  8. if
  9. (substr(php_sapi_name(), 0, 3) !== 'cli')
  10. {
  11. die("This Programe can only be run in CLI mode");
  12. }
  13. /** 关闭最大执行事件限制, 在CLI模式下, 这个语句其实不必要 */
  14. set_time_limit(0);
  15. $pid = posix_getpid(); //取得主进程ID
  16. $user = posix_getlogin(); //取得用户名
  17. echo
  18. <<USAGE: [command | expression]
  19. input php code to execute by fork a new process
  20. input quit to exit
  21. Shell Executor version 1.0.0 by laruence
  22. EOD;
  23. while
  24. (true)
  25. {
  26. $prompt = "n{$user}$ ";
  27. $input = readline($prompt);
  28. readline_add_history($input);
  29. if
  30. ($input == 'quit')
  31. {
  32. break;
  33. }
  34. process_execute($input . ';');
  35. }
  36. exit(0);
  37. function
  38. process_execute($input)
  39. {
  40. $pid = pcntl_fork(); //创建子进程
  41. if
  42. ($pid == 0)
  43. {//子进程
  44. $pid = posix_getpid();
  45. echo
  46. "* Process {$pid} was created, and Executed:nn";
  47. eval($input); //解析命令
  48. exit;
  49. }
  50. else
  51. {//主进程
  52. $pid = pcntl_wait($status, WUNTRACED); //取得子进程结束状态
  53. if
  54. (pcntl_wifexited($status))
  55. {
  56. echo
  57. "nn* Sub process: {$return['pid']} exited with {$status}";
  58. }
  59. }
  60. }
  61. ?>
复制代码

大家注意以上代码中的注释,可以帮助大家理解,也是代码的精粹所在哦。



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿