百度推广 SEM闪投系统
2018-06-22 05:09:02来源:未知 阅读 ()
近期做了一个关于百度营销推广的一个管理系统(SEM闪投),主要包括闪投字段到数据库字段的关系映射,多库多表数据的查询封装组合到最后生成XML文件,最终SFTP到另一个资源服务器上,然后百度要能够访问这个XML并解析它,你在百度上搜索某个关键词的时候,最上面的几条带广告字样的,那么就达到效果了(关键是 money!!!)
在这过程中遇到了一些问题,也踩了不少坑。。在此记录一下;
第一步:多库多表的数据查询,从库里拿到元数据由于数据量以后会越来越大,首先计算出总的数据量,然后做分页查询,先查询主表的数据,每次查询的数据量为1000(可配置),然后根据查询的这1000条数据的主键ID循环查询其它扩展表的扩展表数据,到此第一次取元数据结束;
第二步:闪投字段赋值,分为以下几部分:
1.元数据与闪投字段映射关系中对应的字段作数据替换处理
2.映射字段中常量里的特殊字段进行替换操作。
3.通过第一次拿到的元数据,再去关联其它的库表进行查询得到数据,把拿到的数据
进行1一样的替换处理。
通过以上对数据的处理,已经得到最终输出到XML里的数据,这里会以每2000(可配置)条数据输出到一个XML文件里。
第三步:最后拿到处理好的数据,直接输出到XML文件里(在数据输出的时候又稍做了些替换,主要处理逻辑还是在第二步)
第四步:将生成的XML文件上传资源服务器。
在生成本地文件后,会有上传到远程服务器的动作,这里是个同步的操作,即我会记录
上传成功/失败状态,然后入库
遇到的问题及处理方案:
每次查询的数据量要可配置:
在查询数据的时候,每次查询的数据量不能固定写在程序里,由于每个环境的服务器配置及性能问题,以后更改方便,所以定义在配置文件里。
由于取扩展表数据的时候是in主表的主键ID,在实际生产环境里只配置了500,在每次输出数据到XML文件完成后,即要释放一次数据占用的内存;
保存数据到XML文件里遇到的问题:
即写入数据到XML文件的时候用的是file_put_contents,发现会有文件写的不完整,也就是文件还没写完,程序继续往下执行了,临时解决方案是sleep,但最终这里还是需要优化(后面会改成fwire);
写入XML文件内容中有用 <![CDTD[]]> 导致文件格式错乱,解析方案:Heredoc技术,如:
$S = <<<EOT ...... EOT;
XML文件上传到远程所遇到的问题:
上传文件用的SFTP,即上传文件完成后发现远程服务器上的文件数据并不完整,开发环境是正常的,测试环境上是不正常的,网上搜了些资料说每次上传完成后,要手动的关闭下会话链接,这样才会把缓存区的数据全部写入到磁盘,用sftp_exec(session, 'exit);但测试后发现好像并没能什么用呢,最后决定上生产环境,跑了下数据发
现并没有不完整。(在与环境做斗争。。)
频繁的数据查询导致的STMT_PREPARE问题:
即查询频率太大,最终的解决方案是每次都重新链接数据库进行查询。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:PHP中单例模式与工厂模式
- 百度云虚拟主机BCH安装PHP框架CodeIgniter 2019-02-21
- Thinkphp5 对接百度云对象存储 BOS (上传、删除) 2019-01-16
- emlog 百度熊掌号提交插件-基于Emlog6.0.1特别版美化 2018-12-24
- 腾讯地图和百度地图的PHP相互转换 2018-12-09
- PHP调用百度天气接口API 2018-12-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash