随笔杂谈
你应该了解下人人的路由
web/index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=goods.edit&id=221&tab=basic
web/index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=goods.edit&id=199&goodsfrom=sale
web/index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=goods.add
web目录
类是goods 方法是edit
r代表类根方法么
r参数能直接解析到具体方法
c代表site.php
模块入口
m很简单模块么module
do和id等等类似,可以认为是一个参数
D:\xiangmu\bc8848_wx\addons\ewei_shopv2\core\web\goods
echo dirname(__FILE__) . '/post.php';die;
D:\xiangmu\bc8848_wx\addons\ewei_shopv2\core\web\goods/post.php
sphinx笔记
下载中文版coreseek包
1:解压后,将etc下的mysql。conf文件复制一份放到上级目录下,改名为sphinx。conf
2:配置文件:
2.1:source配置数据源
source goods
你要为那些数据建索引,比如,为php39数据库中的p39—goods表为数据源
sql_db = php39
sql_query 主查询,为那些数据建索引,就用一条语句他她们取出来 例如:select id, name,title from table 为这三个字段减索引
知识点:group_concat() mysql函数
测试语句:SELECT group_concat(town) FROM `players` group by town
结果去查找town中去查找哪些值是一样的,如果相等,就全部列出来,以逗号分割进行列出,如下:
2.2:index 索引文件
一个数据源对应一个index
定义索引文件
index goods
{
source = goods
生成的索引文件存放的目录注意,最后的goods是文件名叫goods 不是goods目录下
path = c:\****\goods
}
2.3:数据库配置
创建索引:
配置完成后,打开cmd 进入bin下降indexer。exe拉近cmd里来
*****。exe -c ****\sphinx.conf(这里是配置的那个路径) goods -》 指的是哪一个数据源
回车就行,到此这个索引就建完了
安装并启动sphinx服务器
打开cmd 使用bin文件夹下的serchd。exe命令 拖入cmd中去
*** -c 配置的路径***\sphinx.conf --install
安装服务窗口中找到sphinx并启动
安装玩的那个窗口中输入services.msc即可
在本地服务窗口中可找到searchd这个服务,说明启动成功
项目中使用这个sphinx查询
A:将sphinx.api.php复制进项目中---放到根目录下就行
B:在控制器中使用php操作他
function keyserch(){
$key = I($key);
require('./sphinxapi.php');引入这个类文件,他是用来操作sphinx的类文件,调用它里面的方法用就行,不会的百度sphinxapi里的方法,手册有介绍
$sph = new \sphinxclient();
$sph = setserver('localhost',9312);连接服务器9312 是sphx的固定端口
$sph = query($key,goods);第一个参数是查询那个关键字,第二个参数是从那个索引文件里查询搜索,{ 指的是索引的名字 },这里是只index goods这里定义的这个
在牛逼一点的功能:
实时索引更新:个人理解 主索引+临时索引(增量索引) 来实现类似于实时更新的效果,原理是,为新数据生成个小的临时的索引文件,然后将索引文件合并到主索引文件中去
a:先给他建一个主索引,从这些索引文件中,查询出一个最大的商品id来 新建一个数据表,将这个最大的商品的id update存到这个表中
b:然后每次新添加的商品,因为不会自动建立索引,所以他们的id不会再索引文件中,他们的商品的id肯定比索引中的保存的最大的商品id要大
c: 然后给新添加的商品新建一个索引,按照上述方法,source goods数据源复制一份,改为 source goods_new 作为新索引数据源
index goods索引文件复制一份,改为index goods_new 作为新索引的名字
然后合并主索引
修改sphx配置文件:新建一个数据表叫spinx_xin 字段为id
source goods
{
type=**
****
sql_query = select *****from p39_goods 建立的索引文件,此时为主索引
# 在创建好索引后吧最后一个商品的id更新到新建的表中:
$sql_query_post = update spinx_xin set id= (select max(id) from p39_goods )
}
测试一下:重新创建一下索引即可看到效果 注意:重建索引需在本地服务中心关闭search的这个sphinx服务 然后执行services.msc在启动 然后输入建立索引命令即可
新建索引不关闭服务器也行,在建索引命令后面加上 --rotate这个命令即可
执行完命令后就把id更新到表中了
注意:这里只是把索引的文件的商品id更新到了新表中,新的商品还没有索引
接下来就是给新商品新建索引,然后把它每过一段时间,合并到主索引中
复制source goods 为goods_new
修改索引的sql语句
source goods_new
{
******
****
*****
新商品id肯定大于索引中最大的商品的id,
因为已将最大的id存在spinx_xin 新表的id中
只要比较商品表中比这个新表的id大的就是新商品
修改sql语句,目的是查询出新商品,然后给新商品建索引
sql_query = select id ****from p39_goods where id>(select id from spinx_xin )
******
}
同理新建了一个数据源就得新建一个index索引文件
复制一份index goods 索引文件在做相应的修改,新的索引就好了
写一个脚本,bat文件,目的有两个,
先给增量数据生成索引文件
把新生成的索引文件合并到主索引中
bat中写入建立索引的语句:
1:建立新的索引文件
****index.exe -c ***\sphinx.conf(路径) goods_new
2:合并索引新索引文件到主索引文件中
****indexer.exe -c ***\sphinx.conf --merge goods goods_new --rotate (这里别忘了写rotate相当于,自动关闭sghinx服务器建索引自动打开,上文有提到)
然后执行脚本文件
但是每次添加商品手动执行这个脚本更新索引,太麻烦了,所以还要配置一下这个脚本,让他自动每五分钟执行一次
window:管理工具--任务计划 设置五分钟自动执行脚本
linux:crond进程
柠檬
三毛从军记
http://www.11ml.cn/about/
http://www.10100.com.cn/
http://www.aykj.net/
https://www.5iec.com/
http://www.yongsy.com/about.html
http://www.east.com.cn/Site/Default/index.shtml
http://www.songyi.net/
https://www.sanways.com/#page1
http://www.w-e.cc/#3
http://www.shiwangyun.com/ -----
http://www.zimukeji.com/
http://www.itstarcom.com/about/
http://www.heyou51.com/
http://www.kuailegezi.com/app.html http://www.tkmlm.com/ http://www.zhixiaodashi.com/ http://www.999rj.com/ http://www.kqcra.com/ http://zxw.wangqi.com/fuwu/
http://www.xwtsoft.com/ http://www.hrkji.com/Index.aspx http://www.cnw6.com/cnw6/demo/
yongshaming
yongshaming55
http://me.cztv.com/video-2722708.html
成功就是发现,复制
郑云工作室
模仿别人是怎样成功的
比如认真研究腾腾怎样做到提高学习效率,成为高手的,发现她的规则总结一下拿过来用,他做的那些东西是很有效的
http://www.imooc.com/learn/163
http://www.maiziedu.com/course/677/
https://v.qq.com/x/cover/zpd4cvvq803nmdz/h03936jwm0k.html?pgv_ref=aio2015&ptlang=2052&pgv_ref=aio2015&ptlang=2052
* 作用:array转xml
*/
function arrayToXml($arr)
$xml = "<xml>";
foreach ($arr as $key=>$val)
{
if (is_numeric($val))
{
$xml.="<".$key.">".$val."</".$key.">";
}
else
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
$xml.="</xml>";
return $xml;
* 作用:将xml转为array
*/
function xmlToArray($xml)
{
//将XML转为array
$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $array_data;
}
我在网上找到一个留言邮件提醒的插件,自己修改了一下,结合到PHPMYWIND,本人不是学PHP的,不知道这样实现合不合理,但是可以正常收到客户留言的邮件。高手可以指教一下,不喜勿喷。谢谢!
首先把附件phpmailer.rar下载并把文件夹解压到网站根目录。
接着新建一个PHP文档,mail.php
复制以下代码到mail.php
本帖隐藏的内容
<?php require_once(dirname(__FILE__).'/include/config.inc.php');
//留言内容处理
if(isset($action) and $action=='add')
{
if(empty($nickname) or
empty($content))
{
header('location:message.php');
exit();
}
$r = $dosql->GetOne("SELECT Max(orderid) AS orderid FROM `#@__message`");
$orderid = (empty($r['orderid']) ? 1 : ($r['orderid'] + 1));
$nickname = htmlspecialchars($nickname);
$contact = htmlspecialchars($contact);
$content = htmlspecialchars($content);
$posttime = GetMkTime(time());
$ip = gethostbyname($_SERVER['REMOTE_ADDR']);
$sql = "INSERT INTO `#@__message` (siteid, nickname, contact, content, orderid, posttime, htop, rtop, checkinfo, ip) VALUES (1, '$nickname', '$contact', '$content', '$orderid', '$posttime', '', '', 'false', '$ip')";
if($dosql->ExecNoneQuery($sql))
{
ShowMsg('留言成功,感谢您的支持!','message.php');
}
}
require("phpmailer/class.phpmailer.php");
error_reporting(E_ERROR);
function smtp_mail ( $sendto_email, $subject, $body ,$att=array()) {
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.qq.com"; //smtp服务器
$mail->Username = "123@qq.com"; //发送邮件账号
$mail->Password = "123"; //发信邮件密码
$mail->FromName = "管理员"; //发件人姓名
$mail->SMTPAuth = true;
$mail->From = $mail->Username;
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
$mail->AddAddress($sendto_email);
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $body;
if(!$mail->Send()) {
echo "邮件错误信息: " . $mail->ErrorInfo;
}else{
ShowMsg('邮件发送成功!谢谢您的支持!','message.php'); //发信成功显示
}
}
$content=$_POST["content"];
$body = $content; //获取邮件内容
// 参数说明(发送地址, 邮件主题, 邮件内容)
smtp_mail('234@qq.com', '请查看留言', $body);
?>
查找message.php代码删除以下代码,因为我一把这段代码复制到了mail.php
//留言内容处理
if(isset($action) and $action=='add')
{
if(empty($nickname) or
empty($content))
{
header('location:message.php');
exit();
}
$r = $dosql->GetOne("SELECT Max(orderid) AS orderid FROM `#@__message`");
$orderid = (empty($r['orderid']) ? 1 : ($r['orderid'] + 1));
$nickname = htmlspecialchars($nickname);
$contact = htmlspecialchars($contact);
$content = htmlspecialchars($content);
$posttime = GetMkTime(time());
$ip = gethostbyname($_SERVER['REMOTE_ADDR']);
$sql = "INSERT INTO `#@__message` (siteid, nickname, contact, content, orderid, posttime, htop, rtop, checkinfo, ip) VALUES (1, '$nickname', '$contact', '$content', '$orderid', '$posttime', '', '', 'false', '$ip')";
if($dosql->ExecNoneQuery($sql))
{
ShowMsg('留言成功,感谢您的支持!','message.php');
exit();
}
}
查找message.php代码把以下代码的action=""修改为action="mail.php"。其他不用改动。
<form name="form" id="form" method="post" action="mail.php">
<span class="msgtitle">联系方式:</span><input name="contact" type="text" id="contact" class="msg_input" /><div class="hr_10"></div><div class="hr_10"></div>
<span class="msgtitle">内 容:</span><textarea name="content" class="msg_input" style="width:729px;height:180px;overflow:auto;" id="content" ></textarea>
<div class="msg_btn_area"> <a href="javascript:void(0);">提 交</a></div>
<input type="hidden" name="action" id="action" value="add" />
<?php
if(!empty($_COOKIE['username']))
$nickname = AuthCode($_COOKIE['username']);
else
$nickname = '游客';
?>
<input type="hidden" name="nickname" id="nickname" value="<?php echo $nickname; ?>" />
</form>