astar(a星)最短路径寻路算法的PHP实现

Posted on 2014-12-01 17:53:38 | 0 comments | 3928℃ | PHP

关于A星算法

astar(a星)最短路径寻路算法,在游戏里面运用比较多,具体算法说明可参考这篇博文,里面讲得很仔细,也很生动:http://www.imsiren.com/archives/960,关键点:

  1. 将方块S添加到open列表中。
  2. 将S从open列表移除,然后添加S到closed列表中。
  3. 对于与S相邻的每一块可通行的方块T:
    • 如果T在closed列表中:不管它。
    • 如果T不在open列表中:计算出它的F,G,H值,并且将T的父节点设置为S,并将T添加到open列表中。
    • 如果T已经在open列表中:检查G值是否更小。如果是,则更新它的F,G,H值,并且将T的父节点设置为S。

实现效果

![image](/uploads...

php的异步http请求解决方案

Posted on 2014-09-02 20:41:14 | 0 comments | 2591℃ | PHP

前戏

如果想用php实现一个http异步请求,是否能做到呢?

正题

答案是肯定的,以下是的socket解决方案:


function makeRequestAsync($url, $params = array(), $type='POST')
{
    $query_string = '';
    if(is_array($params) && !empty($params))
        $query_string = http_build_query($params);
    elseif(is_string($params))
        $query_string = $params;

    $type = s...

php5.5新特性之yield性能测试

Posted on 2014-08-18 20:09:49 | 0 comments | 2789℃ | PHP

前言

最近工作有点忙,好不容易抽空更下博客。

yield是php5.5新出来的一个关键字,它可以让你无需将一个生成的数组赋值后操作,而是仅返回一个数组元素并将指针next,这样可以很大程度上节省你的内存。

性能测试

那么yield的性能到底如何呢?由于项目中有用到这个关键字,所以这里测试了一下,测试环境apache+php5.5.12,本机windows环境。

先来看普通的方法:

普通模式


// 需要测试的核心函数
function test()
{
    $array = array();
    for($i = 0; $i < 10000; $i++){
        $array[] = 'item_' . $i...

ueditor默认图片上传目录问题

Posted on 2014-08-05 12:45:44 | 0 comments | 3112℃ | PHP

前言

ueditor默认图片上传目录是根目录的/ueditor/php/upload/,有一个不好的地方就是,如果你的站点在子目录里面,并且是做了rewrite的那就有点坑了,会出现图片上传成功,但前端无法显示图片的情况,原因就是路径问题。

例如,的本地环境,站点目录是/hisune.com/public/这个,但做了rewrite,通过http://127.0.0.1访问的是http://127.0.0.1/hisune.com/public/这个目录。

这个时候ueditor会上传文件到/而不是/hisune.com/public/,而后端返回给前端的url也为根目录/,rewrite会将根目录/的请求重定向到/hisune.com/public/,实际上这个目录没有这个上传的图片,这样就导致前端页面无法显示。这里[我]...

PhpStorm7.1.3 + xDebug开启断点调试

Posted on 2014-08-04 16:39:16 | 0 comments | 2593℃ | PHP

前言

网上的phpstorm+xdebug断点调试教程都已经比较老了,phpstorm还是2.0的版本,这里介绍一下最新版的phpstorm7.1.3的断点调试教程。

检查xdebug扩展

配置phpstorm之前先确保已经安装好了xdebug扩展,并且在php.ini里面配置好了:


xdebug.remote_enable = on
```bash

## 配置phpstorm
接下来看phpstorm的配置,以下配置为最小化配置,和最简单的调试方法,很多默认参数可自行设置:

1. File -> Settings -> PHP -> Servers 点+号 新增一个server,填写右侧的host,[我](https://hisune.com)这里本机填写127.0.0.1
2. R...
UP