PHP中用set_time_limit(0)长连接的实现

每次我们访问PHP脚本的时候,都是当所有的PHP脚本执行完成后,我们才得到返回结果。如果我们需要一个脚本持续的运行,那么我们就要通过php长连接的方式,来达到运行目的。

每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值。

如下面这段脚本:

<?php
header("Content-Type: text/plain");
set_time_limit(0);

$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
echo $infoString;
flush();
ob_flush();
sleep(5);
}
?>

当我们执行后,每隔5秒钟,我们会得到一行 Hello World ,如果不按停止按钮,浏览器会不停的一行一行继续加载。

通过这一方法,我们可以完成很多功能,例如机器人爬虫、即时留言板等程序。


http://www.chinaz.com/program/2010/0302/107498.shtml

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下代码实现在Python中使用move_base实现rviz小车定点导航: ```python import rospy from move_base_msgs.msg import MoveBaseAction, MoveBaseGoal import actionlib def move_to_goal(x, y): # 初始化节点 rospy.init_node('move_base_client') # 创建一个actionlib客户端,连接move_base服务器 client = actionlib.SimpleActionClient('move_base', MoveBaseAction) client.wait_for_server() # 创建一个MoveBaseGoal对象 goal = MoveBaseGoal() goal.target_pose.header.frame_id = "map" goal.target_pose.header.stamp = rospy.Time.now() # 设置目标点的坐标 goal.target_pose.pose.position.x = x goal.target_pose.pose.position.y = y goal.target_pose.pose.orientation.w = 1.0 # 发送目标点给move_base服务器 client.send_goal(goal) # 等待move_base完成导航 wait = client.wait_for_result() # 判断是否成功到达目标点 if not wait: rospy.logerr("Action server not available!") rospy.signal_shutdown("Action server not available!") else: return client.get_result() if __name__ == '__main__': try: # 设置目标点的坐标 x = 1.0 y = 2.0 # 调用move_to_goal函数实现导航 result = move_to_goal(x, y) # 判断是否成功到达目标点 if result: rospy.loginfo("Goal execution done!") except rospy.ROSInterruptException: rospy.loginfo("Navigation test finished.") ``` 这段代码使用了move_base_msgs和actionlib库,通过创建一个MoveBaseGoal对象,设置目标点的坐标,然后发送给move_base服务器,实现小车的定点导航。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值