php中用来可以做异步调用的代码

    /**
     * 发送一个异步http协议的Get请求,不用关心结果
     * @param  $url
     * @param  $errno
     * @param  $errstr
     * @param  $time_out
     */
    static public function getAsn($url,$errno=‘‘,$errstr=‘‘,$time_out = 5) {
        //移除url中的空格,如果可以格式化url,或许会更好
        $url = str_replace(‘ ‘, ‘‘, $url);
    
        $arr = parse_url($url);
        $arr[‘port‘] || $arr[‘port‘] = 80;
        $fp = fsockopen($arr[‘host‘],$arr[‘port‘],$errno,$errstr,$time_out);
        if(!$fp) {
            return $errno." ".$errstr;
        }
        
        $arr[‘query‘] && $arr[‘query‘] = ‘?‘.$arr[‘query‘];
        $out = "GET ".$arr[‘path‘].$arr[‘query‘]." HTTP/1.1\r\n";
        $out .= "Host: ".$arr[‘host‘]."\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp,$out);
        fclose($fp);
    }
    /**
     * 异步post
     * @param  $url
     * @param  $post_arr
     * @param  $errno
     * @param  $errstr
     * @param  $time_out
     */
    static     function postAsn($url,$post_arr,$errno = ‘‘,$errstr=‘‘,$time_out = 5) {
        $arr = parse_url($url);
        $arr[‘port‘] || $arr[‘port‘] = 80; 
        $fp = fsockopen($arr[‘host‘],$arr[‘port‘],$errno,$errstr,$time_out);
        if(!$fp) {
            return $errno." ".$errstr;
        }
        $post_data = "";
        if($post_arr){
            //在这里还可以使用 http_build_query() 函数,将post的内容编码
            foreach ($post_arr as $key => $val){
                $post_data .= urlencode($key) ."=". urlencode($val)."&";
            }
            $post_data = substr($post_data, 0,-1);
        }
        $data_len = strlen($post_data);  
        $arr[‘query‘] && $arr[‘query‘] = ‘?‘.$arr[‘query‘];
        $out = "POST ".$arr[‘path‘].$arr[‘query‘]." HTTP/1.1\r\n";
        $out .= "Host: ".$arr[‘host‘]."\r\n";
        $out .= "Content-type:application/x-www-form-urlencoded\r\n";  
        $out .= "Connection: Close\r\n";
        $out .= "Content-Length:$data_len\r\n\r\n"; 
        $out .= $post_data."\r\n";
        fwrite($fp,$out);
        fclose($fp);
    }

php中用来可以做异步调用的代码

时间: 2024-11-15 09:34:20

php中用来可以做异步调用的代码的相关文章

python通过multiprocessing 实现带回调函数的异步调用的代码

下边代码段是关于python通过multiprocessing 实现带回调函数的异步调用的代码. from multiprocessing import Pool def f(x): if __name__ == '__main__': pool = Pool(processes=1) # Start a worker processes. result = pool.apply_async(f, [10], callback) # Evaluate "f(10)" asynchron

mvc路由引起异步调用web服务的问题

从一篇blog得知使用脚本可以异步调用Web服务,觉得很新鲜,因为自己很少用到Web服务,所以决定写一写看看什么效果. 首先在UI项目(我使用的是MVC4.0)里创建一个Web服务. 添加Web服务后,默认有一个HelloWorld方法.调用该方法有两种形式,一是服务端通过实例化对象调用,二是前端脚本异步 调用.代码分别是: 1.服务端调用 public ActionResult Index() { WebService1 ws = new WebService1(); var str = ws

用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上

本文为鸡毛巾原创,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,转载请注明 CefSharp说白了就是Chromium浏览器的嵌入式核心,我们用此开发Winform程序也就相当于在程序里面内嵌了一个谷歌浏览器.所以H5/CSS3以及各种Web开发界面设计的优势就可以完全发挥出来. 由于CefSharp更新及时,所以使用此浏览器控件可能是对于Html5/CSS3支持最优秀的方案了. 1.首先我用的是VS2015,这里新建一个空白解决方案.

从Java future 到 Guava ListenableFuture实现异步调用

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/51232004 前言 随着移动互联网的蓬勃发展,手机App层出不穷,其业务也随之变得错综复杂.针对于开发人员来说,可能之前的一个业务只需要调取一次第三方接口以获取数据,而如今随着需求的增加,该业务需调取多个不同的第三方接口.通常,我们处理方法是让代码同步顺序的去调取这些接口.显然,调取接口数量的增加必然会造成响应时间的增加,势必会对系统性能造成一定影响. 为

如何在Spring异步调用中传递上下文

以下文章来源于aoho求索 ,作者aoho 1. 什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行.异步调用指,在程序在执行时,无需等待执行的返回值即可继续执行后面的代码.在我们的应用服务中,有很多业务逻辑的执行操作不需要同步返回(如发送邮件.冗余数据表等),只需要异步执行即可. 本文将介绍 Spring 应用中,如何实现异步调用.在异步调用的过程中,会出现线程上下文信息的丢失

spring-boot实战【10】【转】:Spring Boot中使用@Async实现异步调用

什么是"异步调用"? "异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行:异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序. 同步调用 下面通过一个简单示例来直观的理解什么是同步调用: 定义Task类,创建三个处理函数分别模拟三个执行任务的操作,操作消耗时间随机取(10秒内) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

C#委托异步调用

废话不多说,直接上代码(PS:我就喜欢简单.直接.粗暴) using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Remoting.Messaging;using System.Text;using System.Threading;using System.Threading.Tasks; namespace 异步调用委托{    class Program    {       

Axis2之异步调用

本章主要介绍axis2接口的异步调用方式. 一般情况下,我们使用同步方法(invokeBlocking)调用axis2接口,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止.使用同步方法来调用WebService虽然很直观,但当WebService方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的. 当然,我们很容易就可以想到解决问题的方法,这就是多线程.解决问题的基本方法是将访问WebService的任务交由

利用委托实现异步调用

同步调用示例(委托是一个类型安全的,面向对象的指针) using System; using System.Threading; namespace Demo { public delegate int Operate(int x, int y); public class DelegateAsync { static int Add(int a, int b) { Console.WriteLine ("Add() invoked on thread:{0}\n", Thread.C