V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Zephyros
V2EX  ›  PHP

PHP 诊断专帖。欢迎在本帖求助。欢迎各种稀奇古怪问题

  •  
  •   Zephyros · 2017-11-27 17:19:20 +08:00 · 2468 次点击
    这是一个创建于 2335 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有什么问题想请楼主帮忙看一看的,可以把你的求助帖链接回复到这里试试,我会尽量帮忙。不过不能保证一定能解决你的问题。

    欢迎各位捧场。

    第 1 条附言  ·  2017-12-01 15:42:55 +08:00
    因本人较忙,本帖暂时停止服务,以后有空再说。
    18 条回复    2017-11-29 23:09:17 +08:00
    jimisun
        1
    jimisun  
       2017-11-27 17:51:54 +08:00 via Android
    额 小白 顶一下 有个疑问? php 分层吗
    Zephyros
        2
    Zephyros  
    OP
       2017-11-27 18:29:56 +08:00
    @jimisun
    这个取决于你。常用的 PHP 框架都是有分层的。
    不过如果只是用 PHP 做一次性的简单网页,并且安全性要求也不高的话,也可以选择偷懒不分层。
    elfsundae
        3
    elfsundae  
       2017-11-27 21:17:11 +08:00
    分层是啥意思
    zjp
        4
    zjp  
       2017-11-27 23:52:49 +08:00
    @elfsundae 数据连接层 /业务层 /展现层 这样的
    jimisun
        5
    jimisun  
       2017-11-27 23:58:16 +08:00 via Android
    @Zephyros 哦 平时写 java 一直在各层来回跳转,看 php 代码都是一个网页……
    cncqw
        6
    cncqw  
       2017-11-28 01:19:41 +08:00
    @jimisun 页面用的 ajax,java 也可以啊,只是说嫌麻烦不用
    php01
        7
    php01  
       2017-11-28 09:06:19 +08:00
    protected function process($path)//路径地址
    {
    $img = Image::make($path);
    $img->insert(Image::make($this->logo)->resize(105, 105), 'bottom-right', 15, 15);
    $spath = $path . 'logo.jpg';
    $img->save($spath);
    unset($img);
    return $spath;
    }
    循环执行这个方法三十次会超内存,怎么解决?
    sevenzhou1218
        8
    sevenzhou1218  
       2017-11-28 09:47:47 +08:00
    @php01 Image 没有 destroy()方法吗? 调用$img->destroy()试试呢
    hheedat
        9
    hheedat  
       2017-11-28 10:19:07 +08:00
    php01
        10
    php01  
       2017-11-28 10:20:56 +08:00
    @sevenzhou1218 直接 unset 掉$img 不行吗
    sevenzhou1218
        11
    sevenzhou1218  
       2017-11-28 11:06:01 +08:00
    @php01 unset 只是断开一个变量到一个内存区域的连接,垃圾回收也要满足一定的条件在执行的吧,因此 unset 后不一定会立马被垃圾回收。这个只是我的理解。可能不太对。
    Zephyros
        12
    Zephyros  
    OP
       2017-11-28 13:23:22 +08:00
    @sevenzhou1218
    你的理解是对的。http://php.net/manual/en/language.types.resource.php

    @php01
    你需要检查是否有什么东西还在指向 Image::make($path)所返回的这个资源。
    必须要检查你的 Image 类。我怀疑和 static 属性有关,但我的怀疑不一定正确。
    php01
        13
    php01  
       2017-11-28 13:56:53 +08:00
    @Zephyros 我这个不是静态方法,这是使用的 laravel 的门面模式,看起来像是个静态一样而已
    alinwu05
        14
    alinwu05  
       2017-11-28 14:29:59 +08:00
    @php01 第二个 make 的 image 是不是没有释放呢?
    chnyang
        15
    chnyang  
       2017-11-28 14:55:34 +08:00
    希望楼主介绍一些后台开发好用的类库
    Zephyros
        16
    Zephyros  
    OP
       2017-11-29 01:16:35 +08:00
    @php01
    不知你的问题现在解决了没有。
    如果还没有解决的话,不妨你把这一段代码剥离出来(但要能运行),连同 Image 类和 laravel 框架也带上,然后放仓库里,别人要复现此 bug 会容易一些,好帮你解决问题。
    Zephyros
        17
    Zephyros  
    OP
       2017-11-29 01:23:27 +08:00
    @chnyang
    你可以来这里看看:
    https://packagist.org/explore/popular
    这里有一些流行的库,别忘了用 composer。
    多谢捧场。
    elfsundae
        18
    elfsundae  
       2017-11-29 23:09:17 +08:00
    @zjp 哦,原来如此.. 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   941 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 22:19 · PVG 06:19 · LAX 15:19 · JFK 18:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.