作者:沈智强619 | 来源:互联网 | 2013-08-07 15:45
假设一个问题,我们需要生成3个文件,每一个文件生成都需要10秒钟(当然,现实生活中很少有机会遇到一个文件要生成10秒的,只是为了说明多线程而假设)。如果我们写一个for循环,每次循环生成一个文件,那就需要30秒才能将这三个文件全部生产完毕。
假设一个问题,我们需要生成3个文件,每一个文件生成都需要10秒钟(当然,现实生活中很少有机会遇到一个文件要生成10秒的,只是为了说明多线程而假设)。如果我们写一个for循环,每次循环生成一个文件,那就需要30秒才能将这三个文件全部生产完毕。
不难发现,这个程序是单线程的,所以需要的执行时间相对较常。如果我们能让这三个文件同时生成,那不就只需要10秒就能完成全部文件的生成吗?下面来看下实现该功能的代码:
file_test2.php
echo time();
for($i=1;$i<=3;$i++)
{
$fp=fsockopen('localhost',80,&$errno,&$errstr,5);
fputs($fp,"GET /1.php?id={$i}\r\n");
fclose($fp);
}
?>
1.php
sleep(10);
fopen('d:\\wamp\\www\\2\\'.time().'_'.$_GET['id'].'.txt','w');
?>
执行代码大家就会发现,这三个文件生成时间都是一样的,节约了三分之二的执行时间。但是这样做有一个不足地方,就是并发的这3个进程是不可控的,假设是负责一点的程序,就算跑死了你也不知道,就算知道了也kill不掉。但这是php的机制造成的,也没有办法。
推荐阅读
-
本文探讨了在 PHP 的 Zend 框架下,使用 PHPUnit 进行单元测试时遇到的 Zend_Controller_Response_Exception 错误,并提供了解决方案。 ...
[详细]
蜡笔小新 2024-11-24 20:41:05
-
本文深入探讨了OpenWrt系统中轻量级HTTP服务器uhttpd的工作原理及其配置,重点介绍了LuCI界面的实现机制。 ...
[详细]
蜡笔小新 2024-11-24 20:29:37
-
-
本文详细介绍了TCP头部的各个字段及其功能,包括源端口、目标端口、序列号、确认号等关键字段,以及TCP头部的大小、标志位、窗口大小、校验和等辅助信息。通过解析实际的TCP头部示例,帮助读者更好地理解TCP协议的工作原理。 ...
[详细]
蜡笔小新 2024-11-24 17:21:09
-
为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ...
[详细]
蜡笔小新 2024-11-24 16:44:27
-
本文探讨了Java编程语言中常用的两个比较操作符==和equals方法的区别及其应用场景。通过具体示例分析,帮助开发者更好地理解和使用这两个概念,特别是在处理基本数据类型和引用数据类型的比较时。 ...
[详细]
蜡笔小新 2024-11-24 16:39:50
-
本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ...
[详细]
蜡笔小新 2024-11-24 16:35:09
-
探讨了在移动设备上使用contentEditable属性时遇到的布局问题,并提供了解决方案。 ...
[详细]
蜡笔小新 2024-11-24 16:28:53
-
本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ...
[详细]
蜡笔小新 2024-11-24 16:12:27
-
本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ...
[详细]
蜡笔小新 2024-11-24 15:56:16
-
本文介绍了如何通过设置特定属性来取消小程序中 Navigator 组件的默认点击效果,提高用户体验。 ...
[详细]
蜡笔小新 2024-11-24 15:41:23
-
本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ...
[详细]
蜡笔小新 2024-11-24 15:36:41
-
探讨在使用 PHP 函数 array_combine 时遇到的重复键名问题,并提出解决方案以确保所有数据都能被正确显示。 ...
[详细]
蜡笔小新 2024-11-24 15:31:37
-
本文详细介绍了如何使用Rufus工具制作一个兼容UEFI启动模式的Windows Server 2008 R2安装U盘,包括必要的软件和步骤。 ...
[详细]
蜡笔小新 2024-11-24 15:19:13
-
本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ...
[详细]
蜡笔小新 2024-11-24 15:16:47
-
本文介绍如何使用 Python 计算两个时间戳之间的时间差,并将其转换为毫秒。示例代码展示了如何通过 `time` 和 `datetime` 模块实现这一功能。 ...
[详细]
蜡笔小新 2024-11-24 15:15:36
-