胜博发娱乐平台请问PHP中怎么将UTF-8字符串转化为ANSI编码

( 胜博发娱乐平台 )

主要是保存文件时,系统貌似只能接受ANSI的中文,可是
iconv();
mb_convert_encoding();
好像都不能直接转化的。。
据说WINDOWS系统默认文件名是ANSI,但是我页面设置的是UTF8,选择文件上传也没出现乱码啊

$name = iconv('utf-8','gb2312',$file['name']); //利用Iconv函数对文件名进行重新编码

http://www.jb51.net/article/42660.htm
试过了吗

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐平台大讨论:NOSQL中数据库的设计精髓或者设计原则是什么?

( 胜博发娱乐平台 )

我们先看看在mongodb下,Blog表是如何描述的:
var BlogScheme = new db.Schema({
title : String,
desc : String,
author : String,
body : String,
tags : [String],
count: { type:Number, default:0 },
hidden : { type: Boolean, default: false },
date : { type: Date, default: Date.now },
comments : [{ img: String, name: String, body: String, date: Date }],
meta : {
votes: Number,
favs: Number
}
});
  按照mongodb的设计,每篇Blog都是整篇存储的,与其它表基本没有关联,这也是NoSQL的精髓啊!但是这样子,我们该如何去统计Blog的标签tag呢?

这是我在网上摘抄的一篇文章。
其中关于NOSQL设计的一些原则。就是一篇文章就是一个表,基本上不与其他表联系,里面的评论直接放在了blog里面。我想问的是,如果这样做,怎么分页呢???
比如评论分页,,
还有就是nosql的设计原则是什么?有类似于关系型数据库的范式之说吗?

我还找到了一篇文章:
http://www.cnblogs.com/AllenDang/p/3507821.html#!comments
基本上其设计思路就是上面我提到的:将blog和评论放在一起。
这样做是减少了很多查询的。
但是出现了一个问题,如果用户的昵称变了。
那岂不是每一个这个用户评论的的blog都要去修改了????

关系型数据库,修改一下,然后join查询自然就是最新结果。
请问在mongodb里面该如何设计或者处理这种问题?

nosql比较宽泛,不同的数据库设计原则不同。
比如mongoDB和redis都属于nosql,但是一个是文档型,一个是KV型,设计原则的区别特别大。

mongoDB的设计原则还是比较靠近关系型数据库,它的collection和table比较类似,也是insert、remove、update、find这几个基本操作,可以参考关系型数据库来设计。但是它比关系型关系灵活。
比如:一条微博可以插入9张图片,如果在MySQL中,可能这样设计:微博是一个table,图片信息是一个table,两只表做关联。或者这样设计:在微博那个table中加一个足够大的字符串类型的字段叫img_info,里面存放9张图片信息的json字符串。
而在mongoDB中,天生就是支持上述的第二种设计的。记住,是天生支持,也是就天生对img_info里面内容crud操作都异常方便。

然后回到你说的分页的问题:
分页主要就是用到2个函数:limit和skip
但是,数据量太大的时候,就不适合用skip分页了。
《MongoDB权威指南》中给出的解决方案是:获取上一页的最后一条数据,然后使用gt和limit获取下一页的数据。

关于redis的,@土豆2015 同学已经说的很详细了,就不累述了。

提醒@土豆2015 一下,mongoDB是将部分数据做内存映射,最大化利用内存,持久化还是会保存在磁盘中的。如果没有持久化,把mongoDB重启一下,数据不就都没有了啊。就算是redis这样纯内存型数据库,也是有数据持久化的。

你说的精髓的确是这样,但是只说对了一半,对于一篇博文来说评论的确可以做属性,但是评论的键你却没有选好,应该使用user_id来规避你说的昵称改变带来的问题。(你没有办法把所有东西全部塞到一个document里面对吧,你总有user_info集对吧)
所以mongodb的设计精髓并不是一味提倡你反范式,而是要懂得取舍。
再说说你问的统计tag的问题。
单看你的blog实体的tag设计成了list结构
就像是

tags = {
    "blog_id_111_tag": ["NBA", "姚明", "季后赛"],
}

要统计的办法其实很多,你应该是想统计topic_1下的博文有多少,topic_2下的博文又有多少对吧。其实也很好统计,在python中你可以使用字典推导式把这个tag反转。如下:

tag_mapper = {v:k for k in tags for v in tags[k]}
#这样你就得到了
{
    "NBA": "blog_id_111_tag",
    "姚明": "blog_id_111_tag",
    "季后赛": "blog_id_111_tag"
}

每篇博文都采取这样的方式统计,就能够统计出每个tag下面有哪些同类的博文了。

1.非关系型数据库产品的实质是关系型数据库产品的功能阉割版。通过阉割【关系】等功能,来获取更高的性能,以及更方便的使用性。

2.从上述实质出发,非关系型数据库产品适合用来做数据仓库。因为数据仓库中的数据的特点是量大、关系松散。

3.但是,非关系型数据库由于性能高,因此不少的人开始打它的主意,想把关系型数据也丢进来。这样做肯定有问题,因为你站在代码层上,试图自己在没有关系功能的非关系型数据库引擎上,自己来维护关系功能,肯定会付出昂贵的代价。这个代价可能是:
—-1.非常低的效率。比如试图把一个分布在关系型数据库中多个属性表中的对象,组合回一个大对象放在非关系型数据库里,导致每次查询一个属性时,引擎不得不把整个大对象提取出来。
—-2.非常脏的数据。由于大部分非关系型数据库产品无多表、库事务,因此有人通过创建单独的关系库,来维系两个不同对象的库的关系。但由于无事务,导致几个操作无法保证事务原子,因此经常产生冲突,导致数据“变脏”。

4.综上,当你满脑子都是如何处理强关系时,请不要坚持用非关系型数据库,不然你肯定会被坑。

对于关系型数据库来说,ACID是强一致性的四个要求(ACID:atomicity, consistency, isolation, durability;)

而BASE是NoSQL数据库通常对可用性及一致性的弱要求原则,BASE:Basically Available, Soft-state, Eventually Consistent。

nosql是不管关系结构的,但是我们可以利用已有的数据库结构来构造关系!

mongodb我没用过,我nosql用的redis.处理分页如下:

先有一个全量的blog list,只存blog.id。比如名字叫list:blog.
再有一个hash对应blog数据结构.命名可以这样blog:<#id>。
新建一个blog的时候,结合redis的transaction>>start
redis:rpush(‘list:blog’, <#blog.id>);//先往list存id
redis:hmset(‘blog:’+<#blog.id>, ‘title’, …, ‘content’, ….)//再存hash
transaction<<<commit


分页的时候结合sort limit命令操作list和hash
sort list:blog limit 0 10 get # get blog:->title get blog:->content
当然还可以根据blog的某些属性进行sort
sort list:blog by blog:->createtime desc limit 0 10 get # get blog:->title get blog:*->content

至于评论的分页做法类似。

从你的问题上看出来,你的数据完全依赖mongodb,完全是依赖内存的,你的数据持久化是在哪里呢?

我来发表一下自己的见解吧:
讲要更新的数据放在一个集合,而不是将要显示的数据放在一个集合。那么将评论放在blog表就是错误的了。
因为无法解决这样的问题:
用户的昵称更新了怎么办。
因此,设计原则就是将要更新的放在一起。

去范式,分布式

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

sbf999胜博发官网关于php处据处理

( sbf999胜博发官网 )

对于数据处理,
存入mysql前需要做哪些处理,以及从mysql取出来,要做哪些处理?

如果存入前只做防注入,原数据存到数据库,取出来再过滤。这样的话,一是数据库可能会增大,二是前端也会慢一些。

大家都是怎么做的。都做哪些处理?如何做的?希望谁能分享一下。谢谢了。

你说的没错 就是额外的开销 但是表单注入和前台显示时候的转义都必须做 唯一能节约点时间的就是如果碰到非法的字段直接报500错误而不是试图当正确字段去处理他。。

另外我不太明白为什么这种数据过滤会增大数据库 只要escape那些引起代码意思变化的字符就可以了 中文这些又不需要处理

请用PDO,如果你是大牛,当我没说

大神们都用 PDO,哈哈。MySQL 用 mysqli_real_escape_string, PHP 用 addslashes .都是在数据入库之前做处理。希望更多大神,分享经验。

这是一个DBA转向coder了?还是一只小白…… – -#

该答案已被忽略,原因:

(看完/读完)这篇文章有何感想! sbf999胜博发官网的分享…

sbf999胜博发官网PHP完全不拼接SQL的ORM是怎么实现的?

( sbf999胜博发官网 )

最近看了一些数据抽象层的项目,如Yii框架的ActiveRecord, RedBean, doctrine2, 但由于doctrine2设计得复杂,我还没理清头绪,大致浏览了一下文件,发下它好像完全是抽象成对象,没有拼接SQL语句的。那没有拼接SQL语句是怎么来对数据库进行CRUD的呢?是依靠PDO的接口和方法么?

不是没有拼接,而是你没有找到罢了。
我先问你,你手动像数据库查询记录,你怎么输入查询语句,它能识别的语句是什么?必须是sql语句吧。
你可以打一下log看看嘛,
就比如 CI框架中 ,就有
$this->db->last_query()类似这种吧

你没有拼接,但是别人肯定是拼接了的,因为数据库只认SQL嘛。
你再仔细看看吧,编辑器全局查找一些关键字,可能找到拼接的那部分代码的。

推荐一个短小精悍的ActiveRecord库,lloydzhou/activerecord · GitHub, 可以实现类似Yii的relation的效果。文档地址:http://lloydzhou.github.io/activerecord/

class User extends ActiveRecord{
  public $table = 'user';
  public $primaryKey = 'id';
  public $relations = array(
    'contacts' => array(self::HAS_MANY, 'Contact', 'user_id')
  );
}
class Contact extends ActiveRecord{
}
$user = new User();
// find one user
var_dump($user->notnull('id')->orderby('id desc')->find());
echo "\nContact of User # {$user->id}\n";
// get contacts by using relation:
//   'contacts' => array(self::HAS_MANY, 'Contact', 'user_id'),
var_dump($user->contacts);

(看完/读完)这篇文章有何感想! sbf999胜博发官网的分享…

胜博发娱乐平台控制器被连续执行二次

( 胜博发娱乐平台 )

问题是这样的,发一份注册激活邮件到用户邮箱,点击邮件是的激活链接,结果,控制器被连续执行二次,把链接手动复制到地址栏回车,就正常执行一次,好奇怪呀:
/**
* 邮箱激活
*/
public function active_user(){
file_put_contents(‘active.txt’, ‘测试邮箱’, FILE_APPEND);
die;
}
结果active.txt里面出现:测试邮箱测试邮箱,即被连续执行了二次,求解释???
开发用的是CI框架
后面经过测试发现,只要是点邮件里面的链接就会被执行二次

排查方案。
1、使用chrome浏览器,打开按F12,然后勾选preserve log,怀疑你发送两次请求了。

看看你到底发了多少次请求
2、在你的active_user中打一下log,看看两次请求的时间间隔。

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐平台laravel怎么改造分页类,给他加上首页和尾页

( 胜博发娱乐平台 )

求助laravel的分页类该怎么改造下。可以生成有首页,尾页,有总计多少条记录,当前第几页,分页,

可以考虑扩展Illuminate\Pagination\Presenter和添加分页模版。
目前我就是这样做的:

class ExtPresenter extends Illuminate\Pagination\Presenter{

    public function getActivePageWrapper($text)
    {
        return '<span class="current">'.$text.'</span>';
    }

    public function getDisabledTextWrapper($text)
    {
        return '<span class="ellipsis">'.$text.'</span>';
    }

    public function getPageLinkWrapper($url, $page,$rel = null)
    {
        return '<a href="'.$url.'">'.$page.'</a>';
    }

}

分页模版

<?php
    $presenter = new ExtPresenter($paginator);
?>

<?php if ($paginator->getLastPage() > 1): ?>
    <div class="cms_page">
        <?php echo $presenter->render(); ?>
    </div>
<?php endif; ?>

抱歉,上面代码好像没回答你问题重点上,如何加上首页与尾页,可以考虑参阅下面文章:
http://php2012web.blog.51cto.com/5585213/1539601

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

胜博发娱乐平台fsizelimt为什么不能用

( 胜博发娱乐平台 )

如题,我同时限制了minetype和size,但只有前者起作用,后一个限制不了。

if ($xianzhi=="ture"){
   $putPolicy->MimeLimit = $leixing;
   $putPolicy->fsizeLimit = 200;
}
    $upToken = $putPolicy->Token(null);
    $arr['uptoken'] = $upToken;
    print_r(json_encode($arr));

$putPolicy->FsizeLimithttps://github.com/qiniu/php-sdk/blob/develop/qiniu/rs.php 这里有上传策略类的各变量的声明,你可以参考下。

因为你的变量大小写错了。

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

sbf999胜博发官网SQL如何查找数据库多栏位重复数据?

( sbf999胜博发官网 )

首先,我有一个电影数据库,这是其中的一部分:
[rel] movie_id, star_id, time

一般是一个电影,对应多个演出明星。本来相同的movie_id 和 star_id 在数据库中只能出现一次。
可是之前系统设计漏洞,导致重复插入了多项数据
譬如:
功夫, 周星驰
功夫, 黄圣依
功夫, 周星驰
等于是我们数据库中出现了两个 功夫, 周星驰。

请问各位朋友,有没有可以设计一个sql语句,帮我快速的查找出这些冗余的项和 电影的id。

保留id最小的记录

查询重复数据
select * from TABLE_NAME where (movie_id,star_id) in (select movie_id,star_id from TABLE_NAME group by movie_id,star_id having count() > 1) and id not in (select min(id) from TABLE_NAME group by movie_id,star_id having count()>1)

删除重复数据
delete from TABLE_NAME where (movie_id,star_id) in (select movie_id,star_id from TABLE_NAME group by movie_id,star_id having count() > 1) and id not in (select min(id) from TABLE_NAME group by movie_id,star_id having count()>1)

sqlSELECT movie_id, star_id, COUNT(*) FROM xxx GROUP BY (movie_id + '-' + star_id) HAVING COUNT(*) > 1

我是有一个和你差不多的,但是我高并发,一分钟3000条数据入库。
我是先将数据放memcahe里面,
每个入库的先匹配,
如果没有,就入库,
如果有的,比较数据时间戳,再做处理。。。。

SELECT distinct movie_id, star_id FROM xxx

SELECT t.id, t.movie_id, t.star_id from xxx AS t LEFT JOIN xxx AS t1 on t.movie_id = t1.movie_id WHERE t.id != t1.id AND t.star_id = t1.star_id

把xxx换成你的表名,这里的id是主键id,如果你表里没有那就换成time,但是这样可能会造成time也相同的重复数据无法被找到。

(看完/读完)这篇文章有何感想! sbf999胜博发官网的分享…

sbf胜博发codeigniter总是提示404

( sbf胜博发 )

我的系统是ubuntu-14.04 + nginx-1.4.6 + PHP-5.5.9
能正常打开application/config/routes.php中设置的default_controller设置的默认控制器。但是在浏览器中输入自己定义的控制器就提示404,这是为什么?

可能是重写写错了
可能是route配置错了
可能是url写错了
一般情况下index.php不可缺

最好把nginx的重写规则,route规则和url贴上来,甚至控制器里的代码

这通常是因为没有找到你自定义的控制器的原因,检查一下控制器名和文件名以及对应的类名是否一致。

可以你的url贴出来。。看看呗。。。

(看完/读完)这篇文章有何感想! sbf胜博发的分享…

胜博发娱乐平台phpize 安装GD扩展,不支持JPEG。求解?

( 胜博发娱乐平台 )

最初编译php的时候,没有带上GD扩展。现在想通过phpize动态的加上gd。 png支持了。但是jpeg一直支持不了。

libz freetype libpng libjpeg 都装好了

编译也没什么问题:

gd.so放到php.ini后 phpinfo()的输出结果不支持JPEG 。头很大。

指定libjpeg.so 的目录 –with-jpeg-dir=/usr/lib64 这个位置看系统,各位不同

我的也跟你一样,就是不行,搞了好久了。 php7

你这个问题解决了没?

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

sbf胜博发[PHP]怎么列出位于某个命名空间内定义的class?

( sbf胜博发 )

用get_declared_classes()貌似会列出所有的class。
如果用反射的话需要创建大量ReflectionClass对象。
请问还有什么方法能迅速列出命名空间内定义的所有class,而且不严重消耗资源?

  1. 首先你得遵守PSR-4之类的靠谱规范
  2. 然后用glob即可

(看完/读完)这篇文章有何感想! sbf胜博发的分享…

sbf胜博发在mongoDB里面,是不是也应该讲那些经常变化和不太经常变化的数据分开?

( sbf胜博发 )

比如,username 是不太变化的,但是用户的经纬度却在经常变化。在mysql中间,当然是将那些不太会变化的数据和经常变化的数据分开,这样索引不会容易失效或者经常变更。
我想说的是这些情况在mongo中间(或者Nosql)中间也存在这种设计吗?

不知道谁测过mongo的update性能 这种数据库级别的锁(基本上等同于文件锁) 写性能不知道如何
当然mongo有热数据缓存 经常变化的数据进内存也无所谓了
另外 不管什么数据库 经常变化的数据做索引都不太好

经纬度做2d索引,background 属性

(看完/读完)这篇文章有何感想! sbf胜博发的分享…

胜博发娱乐平台WEB服务器配置

( 胜博发娱乐平台 )

公司内网有3台服务器 一台LINUX 2台WIN

LINUX可以正常访问上面的站点

前几天重装的LINUX

怎样配置这台LINUX 让另外两台服务器上的网站也可以正常访问。

把你的那台linux服务器配置一个代理,将该转发的请求转发到让77和78就可以了。Nginx多serer反向代理

一般多服务器拆分分2种吧
1是垂直拆分,比如webserver和数据库,缓存分开
2是水平拆分,按项目分服务器
莫非你们数据库用的sql server和dlap跑在win里而webserver跑在linux?
如果是水平拆分,看看dns解析的是哪台服务器,然后一步步追查下去,
给的信息还是太少。

@brzhang 他的方案是对的,nginx配置代理服务器,外部请求先到linux服务器,然后转发给其他的两个windows服务器即可

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

sbf胜博发php网站开发,关于‘文章列表页显示’的疑问?

( sbf胜博发 )

一般显示文章列表的时候,就是到一个文章的数据库中取出一条条的记录,然后将标题、摘要等信息循环显示出来,现在我的问题是有的文章中有图片,有的文章没有图片,怎样将有图片的文章中的图片取出来预览呢,就像百度贴吧那样的。

一般在发表文章的时候,是先上传图片到网站目录,然后返回图片地址,提交的时候讲图片地址保存到了数据库。现在在‘文章列表页’这样的显示情况时,是通过正则来判断里面有没有图片链接,还是给当前数据表加一列表示图片数量的字段,加字段的话怎么加呢?还是用其他的方法呢?

不知道我理解得对不对,没开发过网站,完全是自己瞎看得一些源码。

1.你可以在存入数据库的时候设置一个feature_img的字段用来显示,有就显示,没有就不显示撒

2.使用正则匹配出HTML中<img src="/img/bVklTz" alt="图片描述">src

//@$content:string,如果是使用所见即所得文本编辑器,这个就是你的post过来的文章内容
//@matches:string
preg_match_all('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',$content,$matches);
$feature_img = $matches[0]//取得图片的url,存入数据库
//echo $matches[0];

图片保存到另外的字段就可以了

如果是单独上传的,可以加一个字段 ,如果是用富文本编辑器写上的话,也能配置文件是上传到哪,这时是需要放一个字段 还是放单独字段要看你嫌不嫌麻烦

(看完/读完)这篇文章有何感想! sbf胜博发的分享…

sbf999胜博发官网php微信获取到的用户头像怎么变成圆形呢?

( sbf999胜博发官网 )

想要把获取到的用户头像信息 用水印的方式贴到海报上 不是直接显示 是要把头像先保存下来 然后生成裁剪成圆形 加到海报上 生成一张新的图片
获取的头像是正方形的,怎么变成圆形呢?

用border-radius呗

同意楼上的观点,例如你用IE8打开B站,你的头像就是方形的,因为IE8不支持radius-border属性

(看完/读完)这篇文章有何感想! sbf999胜博发官网的分享…

胜博发娱乐平台微信扫描登录PC端这要怎么改

( 胜博发娱乐平台 )

首先微信公众号的回调域配好,在项目里面使用该公众号的Appkey、secrect。
呼出扫描登录成功跳转到callback方法这里会带给你个code让你可以获取微信用户的信息

详情查看 微信网页开发文档

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…

sbf胜博发PHP中的ob_end_flush()方法可以在不使用ob_start()的时候使用吗?

( sbf胜博发 )

如果程序并没有使用ob_strat()开启缓冲区,后面直接使用ob_end_flush()会有什么的效果。和ob_start()一起用的效果一样吗?

ob_start() 和 ob_end_flush() 成对使用时,可以实现对输出的控制。
ob_strat() 开启缓冲区,ob_end_flush() 输出缓冲区内容并关闭缓冲。
ob_end_flush 单独使用是无效的。

(看完/读完)这篇文章有何感想! sbf胜博发的分享…

胜博发娱乐平台nginx 监听了两个端口80和81,但是我找不到81的配置!!

( 胜博发娱乐平台 )

nginx.conf里头

http {

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

}

conf.d是空的。。。

sites-enabled

然后default文件里头

server {

listen 80 default_server;
listen [::]:80 default_server;
root /data/www/;

# Add index.php to the list if you are using PHP
index index.html index.htm index.php;

server_name _;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
#
#    # With php5-cgi alone:
    fastcgi_pass 127.0.0.1:9000;
#    # With php5-fpm:
#    fastcgi_pass unix:/var/run/php5-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny all;
#}

}
我都没看到81这个字

当然需要自己写啊!

server {
listen 81;
server_name ;
root /home/www;
access_log /var/log/nginx;
}

81端口的进程明明是node……

默认是80的。81的就是自己修改的。

可以用浏览器打开81端口看下是什么内容。

site-enable目录下面放的是一个link
site-available目录下面放的是一个真实的配置文件,你看一下

81端口明明是nodej在占用

(看完/读完)这篇文章有何感想! 胜博发娱乐平台的分享…