PHP+shell实现多线程的方法

   本文实例讲述了PHP+shell实现多线程的方法。分享给大家供大家参考。具体如下:

  这里介绍如何借助shell脚本实现多线程。

  先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码:

  PHP代码:

  ?

1
2
3
4
5
6

<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(10);
}
?>

  在看下shell脚本的代码,非常简单

  ?

1
2
3
4
5

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
/usr/bin/php -q /var/www/html/test.php &
done

  注意到在请求php代码的那行有一个&符号吗,这个是关键,不加的话是不能进行多线程的,&表示讲服务推送到后台执行,因此,在 shell的每次的循环中不必等php的代码全部执行完在请求下一个文件,而是同时进行的,这样就实现了多线程,下面运行下shell看下效果,这里你将 看到10个test.php进程再跑,再利用linux的定时器,定时请求这个shell,在处理一些需要多线程的任务,例如,批量下载时,非常好用!

  希望本文所述对大家的php程序设计有所帮助。

时间: 2024-08-31 18:43:46

PHP+shell实现多线程的方法的相关文章

PHP+shell实现多线程的方法_php技巧

本文实例讲述了PHP+shell实现多线程的方法.分享给大家供大家参考.具体如下: 这里介绍如何借助shell脚本实现多线程. 先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码: PHP代码: <?php for ($i=0;$i<10;$i++) { echo $i; sleep(10); } ?> 在看下shell脚本的代码,非常简单 #!/bin/bash for i in 1 2 3 4 5 6 7 8 9 10

Shell脚本传参数方法总结

  这篇文章主要介绍了Shell脚本传参数方法总结,本文着重讲解传递固定个数参数的方法.可变个数参数的方法两部份内容,需要的朋友可以参考下 一.接收固定长度的参数 代码如下: [root@svn shell_example]# cat params.sh #!/bin/bash #传参测试脚本 echo "My name is `basename $0` -I was called as $0" echo "My first parameter is : $1" e

JavaScript使用yield模拟多线程的方法

 这篇文章主要介绍了JavaScript使用yield模拟多线程的方法,实例分析了javascript多线程的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JavaScript使用yield模拟多线程的方法.分享给大家供大家参考.具体分析如下: 在python和C#中都有yield方法,通过yield可以实现很多多线程才能实现的功能. 对javascript有版本要求:JavaScript 1.7 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14

php中foreach结合curl实现多线程的方法分析_php技巧

本文实例讲述了php中foreach结合curl实现多线程的方法.分享给大家供大家参考,具体如下: 多线程是php不支持的但我们可以通过foreach来伪多线程了,但这个伪多线程速度不一定比单线程要单到哪里去了,具体来看个例子. 在利用foreach语句循环图片URL,并通过CURL将所有图片进行本地保存的函数时,出现了只能采集到一个的问题,现将foreach和CURL结合进行多URL请求的方法进行下总结. 方法1:循环请求 $sr=array(url_1,url_2,url_3); forea

JavaScript使用yield模拟多线程的方法_javascript技巧

本文实例讲述了JavaScript使用yield模拟多线程的方法.分享给大家供大家参考.具体分析如下: 在python和C#中都有yield方法,通过yield可以实现很多多线程才能实现的功能. 对javascript有版本要求:JavaScript 1.7 function Thread( name ) { for ( var i = 0; i < 5; i++ ) { Print(name+': '+i); yield; } } //// thread management var thre

C#多线程实现方法——Task/Task.Factary

原文:C#多线程实现方法--Task/Task.Factary Task 使用 Task以及Task.Factory都是在.Net 4引用的.Task跟Thread很类似,通过下面例子可以看到. static public void ThreadMain() { Thread t1 = new Thread(TaskWorker); t1.Start(3); } static public void TaskMain() { Task t1 = new Task(TaskWorker, 3, T

java 实现多线程的方法总结_java

java 实现多线程的三种方法 在java中,有三种方法可以实现多线程.第一种方法:继承Thread类,重写run函数.第二种方法:实现Runnable接口,重写run函数.第三种方法:实现Callable接口,重写call函数.本文章将通过实例讲解这三种方法如何实现多线程.需要的可以参考一下.  (1)继承Thread类,重写run函数. class xx extends Thread{ public void run(){ Thread.sleep(1000) //线程休眠1000毫秒,sl

linux中shell模拟多线程执行任务详解

shell本身是不能实现多线程的,但是可以通过启动子进程,并将子进程放入后台执行来模拟多线程,为了在提高脚本执行效率的同时又不明显增加负载的作用,还需要对同时放入后台的进程数做下限制.  代码如下 复制代码 #!/bin/bash set -x  # 开启调试模式 #判断是否有参数 if [ $# != 1 ];then     echo "您输入的参数有误"     exit -1 fi # 允许的最大进程数 MAX_THREAD_NUM=5 tmp_fifo_file=/tmp/$

VxWorks操作系统shell命令与调试方法总结

VxWorks下的调试手段 主要介绍在Tornado集成开发环境下的调试方法和利用支撑定位问题的步骤.思路. 1         Tornado的调试工具 嵌入式实时操作系统VxWorks和集成开发环境Tornado的组成结构如下图1.分为主机和目标机系统. 图1 集成开发环境结构图 在Tornado下调试相关操作在Debug菜单下包括 图2 Debug菜单 简单解释各菜单项的功能 1.1        WindShell 1.1.1         简介 Vxworks的Shell分为两种ho