dionyang

第 186 位会员

会员
个人信息
  • 加入于 2017-09-20 18:08:37
  • 最后登录时间 6年前
个人成就
  • 发表文章次数 19
  • 发布回复次数 25
  • 个人主页浏览次数 16
关于php mongodb的最大连接数6年前

@Terry [#4楼](#comment4)

简单说就是阿里云的芒果服务限制连接数1000。php服务器的进程数超了这个数字。导致连接数占满。导致报错

启用replicaSet仅启到主备作用。无法分担连接数。(主从库连接数相同)

php mongodb扩展不支持URI中的maxPoolSize php-fpm1子进程产生1 mongo TCP连接 进程存在时不释放。超过时会造成连接数占满

mongo服务不建议使用短链接

因此减少分配给该项目的php-fpm进程数。以此稳定mongo的连接数

另外不是很清楚yii\mongodb\Connection中关闭连接的方法是否能真正关闭连接,看上去只是reset了几个属性。 line:378

    /**
     * Closes the currently active DB connection.
     * It does nothing if the connection is already closed.
     */
    public function close()
    {
        if ($this->manager !== null) {
            Yii::trace('Closing MongoDB connection: ' . $this->dsn, __METHOD__);
            $this->manager = null;
            foreach ($this->_databases as $database) {
                $database->clearCollections();
            }
            $this->_databases = [];
        }
    }
关于php mongodb的最大连接数6年前

@Terry #1楼 了解过了 阿里云的mongodb副本集自带replicaSet,应该使用如下URI连接:

mongo://user:password@host1:port1,host2:port2/database?replicaSet=xxx&maxPoolSize=1

这里maxPoolSize指的是一个客户端的连接池大小。这里我以一个请求占用一个php-fpm的worker计算,maxPoolSize就设置为1了。

关于replicaSet可以参考这篇文章:http://www.cnblogs.com/yaoxing/p/mongodb-replica-set.html

mongodb连接数问题6年前

@Terry #1楼 用户并发应该是不高的。应该是阿里云限制并发数了。在考虑要不要用replica set

admin后台表名不要写死6年前

@Terry #7楼 我用composer装的。没用git。。

admin后台表名不要写死6年前

@Terry #4楼 错了,是vendor/fancyecommerce/fec_admin/block/role/Manageredit.php

admin后台表名不要写死6年前

@Terry #4楼 appadmin/local/local_modules/Fecadmin/block/role/Manageredit.php 175行

                    $sql = "delete from {$table} where menu_id in ($remove_role_menu_id_str ) and role_id = :role_id ";

这个已经是我改过的了

admin后台表名不要写死6年前

@Terry #1楼 还有后面delete也直接用的语句写的表名

appadmin 一处代码错误6年前

@Terry #4楼 可能我用的有问题。我把custom_options当产品的普通属性用了

appadmin 一处代码错误6年前

@Terry #2楼 另外custom_options的配置也建议增加input输入框的配置 目前只有select的。 地址: vendor/fancyecommerce/fecshop/app/appadmin/modules/Catalog/block/productinfo/Manageredit.php

	                    if ($type == 'select' && is_array($data) && !empty($data)) {
                        $str .= '<select atr="'.$attr.'" class="custom_option_attr">';
                        foreach ($info['display']['data'] as $k=>$v) {
                            $str .= '<option value="'.$k.'">'.$v.'</option>';
                        }
                        $str .= '</select>';
                    }else if($type == 'inputString'){
                        $str .= '<input type="text" style="width:40px;" atr="'.$attr.'" class="custom_option_attr">';
                    }
                    $str .= '</div>';
如何重新fec_admin下的controller文件6年前

@Terry #2楼 classMap可以是可以但是不能继承啊

fecshop 直接生成订单的一个问题6年前

@Terry #4楼 好的。最近较忙。有空写。

fecshop 直接生成订单的一个问题6年前

@Terry #1楼 另外还有一个 service里揉合进太多identity的内容了。个人认为这样也不太好。因为你的identity设计不一定符合开发者的。建议是把identity作为一个参数,传到相关service的方法里。这样即使定义不同也可修改这个identity。identity的获取和判定交给block层和controller层。

fecshop 直接生成订单的一个问题6年前

@Terry #1楼 sorry qty相关的我前面翻手册看到了。。所以把问题改了下。其实不仅是价格计算。和cart相关的一些属性单独写起来也很麻烦

fecshop config加载顺序问题6年前

@Terry #1楼 好的谢谢解答。我只是在想main等一些配置是不是应该在vendor之前。那还是写在fecshop_local中吧。

fecshop service一点建议6年前

@Terry #3楼

namespace appserver\local\local_modules\mysqldb\customer;

use yii\behaviors\TimestampBehavior;

class Address extends \fecshop\models\mysqldb\customer\Address{
    public function behaviors()
    {
        return [
            [
                'class'=>TimestampBehavior::className(),
                'createdAtAttribute' => 'created_at',
                'updatedAtAttribute' => 'updated_at',
                'value' => time()
            ]
        ];
    }
}

好的 附上代码

fecshop service一点建议6年前

@Terry #1楼 另外 sql表里的创建时间和更新时间更新 建议在model层里使用timestampbehavior来进行。现在时间更新好像是放在block层的。

fecshop appapi 两处与路由有关的问题6年前

@Terry #5楼 不好意思 再打扰个问题。想新建一个Controller并且在路由中作映射怎么办。现在即使配置正确也只能重写。

fecshop appapi 两处与路由有关的问题6年前

@Terry #3楼 好的吧 我先把接口写到appfront里算了

Your Site Analytics