淘宝客API组件升级调整方法介绍
通俗的讲就是JSSDK的整合和使用。
JSSDK的官方解释:
淘宝JSSDK是基于javascript的SDK,网站通过引入一个JS文件就可以实现:
通过JSSDK提供的方法,安全、便捷的利用javascript访问Taobao API。
通过JSSDK提供的组件方法,快速、简单的集成淘宝电商组件。
对安全性较高的服务开放的唯一入口,例如:关联推荐中用户行为的关联推荐,收藏夹接口等。
合作网站无需强大的后端服务系统,通过前端获取数据并直接展示,可获取到“小投入支撑大量用户”的效果。
为合作网站提供多维度的用户数据分析服务。
php页面的JSSDK的整合
使用诸如 WordPress 这种PHP程序的网站主这次还是很有福利的,
因为官方的文档中便是用php文档整合JSSDK来举例的。
1.在页面中加载jssdk文件
其中appkey=xxxxxxx后面的xxxxx就是你的appkey
代码如下 | 复制代码 |
<script src="http://l.tbcdn.cn/apps/top/x/sdk.js?appkey=xxxxxxx"></script> |
2.生成签名,存入cookie中
代码如下 | 复制代码 |
<?php |
淘宝客接口调用
这里给一个最简单的,官方调用接口的示例
代码如下 | 复制代码 |
TOP.api('rest', 'get',{ |
需求如下: 现有一个1G左右的日志文件,大约有500多万行, 用php返回最后几行的内容。
实现方法:
1. 直接采用file函数来操作
注: 由于 file函数是一次性将所有内容读入内存,而php为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下 限制只能最大使用内存16M,这是通过php.ini里的memory_limit = 16M来进行设置,这个值如果设置-1,则内存使用量不受限制.
下面是一段用file来取出这具文件最后一行的代码.
整个代码执行完成耗时 116.9613 (s).
代码如下 | 复制代码 |
ini_set('memory_limit','-1'); $file = 'access.log'; $data = file($file); $line = $data[count($data)-1]; echo $line; |
我机器是2个G的内存,当按下F5运行时,系统直接变灰,差不多20分钟后才恢复过来,可见将这么大的文件全部直接读入内存,后果是多少严重,所以不在万不得以,memory_limit这东西不能调得太高,否则只有打电话给机房,让reset机器了.
2.直接调用linux的tail命令来显示最后几行
在linux命令行下,可以直接使用tail -n 10 access.log很轻易的显示日志文件最后几行,可以直接用php来调用tail命令,执行php代码如下.
整个代码执行完成耗时 0.0034 (s)
代码如下 | 复制代码 |
file = 'access.log'; $file = escapeshellarg($file); // 对命令行参数进行安全转义 $line = `tail -n 1 $file`; echo $line; |
3. 直接使用php的fseek来进行文件操作
这种方式是最为普遍的方式,它不需要将文件的内容全部读入内存,而是直接通过指针来操作,所以效率是相当高效的.在使用fseek来对文件进行操作时,也有多种不同的方法,效率可能也是略有差别的,下面是常用的两种方法.
方法一:
首先通过fseek找到文件的最后一位EOF,然后找最后一行的起始位置,取这一行的数据,再找次一行的起始位置,再取这一行的位置,依次类推,直到找到了$num行。
实现代码如下
整个代码执行完成耗时 0.0095 (s)
代码如下 | 复制代码 |
function tail($fp,$n,$base=5) |
方法二 :
还是采用fseek的方式从文件最后开始读,但这时不是一位一位的读,而是一块一块的读,每读一块数据时,就将读取后的数据放在一个buf里,然后通过换行符(n)的个数来判断是否已经读完最后$num行数据.
实现代码如下
整个代码执行完成耗时 0.0009(s).
代码如下 | 复制代码 |
$fp = fopen($file, "r"); |
方法三:
整个代码执行完成耗时 0.0003(s)
代码如下 | 复制代码 |
$fp = fopen($file, "r"); |
CutyCapt下载地址:http://sourceforge.net/projects/cutycapt/files/cutycapt/
windows CutyCapt不需要安装,直接保存到你的电脑中即可。
然后你php代码如下写
代码如下 | 复制代码 |
<?php |
如果你是linux系统就需要简单的配置一下CutyCapt
安装网站截图软件CutyCapt
一,先安装Qt47
增加qt47的下载源
代码如下 | 复制代码 |
vi /etc/yum.repos.d/atrpms.repo [atrpms] name=CentOS $releasever – $basearch – ATrpms baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms gpgcheck=1 enabled=1 [atrpms-testing] name=CentOS $releasever – $basearch – ATrpms testing baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms gpgcheck=1 enabled=1 yum update yum installqt47 yum installqt47-devel yum installqt47-webkit yum installqt47-webkit-devel |
也许这里还会有报错提示
warning: qt44-x11-4.4.3-10_4.el5.x86_64.rpm: Header V4 DSA signature: NOKEY, key ID 66534c2b
error: Failed dependencies:
libGLU.so.1()(64bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_64
libmng.so.1()(64bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_64
解决:
yum -y installqt-devel*
二,安装 CutyCapt
代码如下 | 复制代码 |
cd /data0/software svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt mv cutycapt/CutyCapt /usr/local/cutycapt cd /usr/local/cutycapt qmake make |
此处可能会报错
make: *** [CutyCapt] Error 1
解决:
yum update sqlite
再次执行 make
如果还不成功 qmake-qt47 再次执行make
三,下载x-server
代码如下 | 复制代码 |
wget http://www.flexthinker.com/wp-content/uploads/2009/11/xvfb-run.sh.txt mv ./xvfb-run.sh.txt/usr/local/cutycapt/xvfb-run.sh chmodu+x /usr/local/CutyCapt/xvfb-run.sh |
四,安装中文包
yum installfonts-chinese
五,安装ImageMagick
yum installImageMagick
六,测试:
代码如下 | 复制代码 |
/usr/local/cutycapt/xvfb-run.sh --server-args="-screen 0, 1024x768x24"/usr/local/cutycapt/CutyCapt --url=http://www.111cn.net--out=/tmp/163.jpg |
163.jpg没有加载出flash
七,下载64位flash插件:
代码如下 | 复制代码 |
cd /data0/software #wget http://119.188.72.26/1/ishare.down.sina.com.cn/14036482.so?ssig=YB70Xk7Ph9&Expires=1340899200&KID=sina,ishare&ip=1340777795,114.255.44.&fn=libflashplayer.so <a href="http://ishare.iask.sina.com.cn/f/13659493.html" target="_blank">http://ishare.iask.sina.com.cn/f/13659493.html</a> ll /usr/lib64/mozilla/plugins/ lrwxrwxrwx 1 root root 41 06-27 14:00 libflashplayer.so ->/usr/lib64/flash-plugin/libflashplayer.so cp /data0/software/libflashplayer.so /usr/lib64/flash-plugin/ |
测试加载成功
每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值。 当我们执行后,每隔5秒钟,我们会得到一行 Hello World
代码如下 | 复制代码 |
header("Content-Type: text/plain"); $infoString = "Hello World" . "n"; |
例
代码如下 | 复制代码 |
<?php |
个人觉得在php定时执行任务还是有点复杂并且不好使用,下面我来介绍在操作系统中计划任务来实现。
在网上找了些WINDOWS执行PHP的计划任务的方法,有一个写得很全,可惜在我这竟然没通过。最后不得不综合各门派的方法,才能在我这运行成功。
1、写一个PHP程序,命名为test.php,内容如下所示:
代码如下 | 复制代码 |
<? $fp = fopen("test.txt", "a+"); fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!n"); fclose($fp); ?> |
程序大胆地写,什么includerequire尽管用,都没问题
2、新建Bat文件,命名为test.bat,内容如下所示:
代码如下 | 复制代码 |
D:phpphp.exe -q D:websitetest.php |
//相应目录自己改上
3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的bat文件
设置时间和密码(登陆WINDOWS的)
保存即可了。
4、over! 可以右键计划任务点“运行”试试
linux系统中
我们可以借助Linux的Crontab工具来稳定可靠地触发PHP执行任务。
下面介绍Crontab的两种方法。
一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:
1.
代码如下 | 复制代码 |
# crontab -e 2.00 * * * * /usr/local/bin/php /home/john/myscript.php /usr/local/bin/php |
为PHP程序的路径。
二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。
代码如下 | 复制代码 |
1.00 * * * * lynx -dump /myscript.php |
下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用"curl -o"选项,你也可以把脚本的输出转储到临时文件。
代码如下 | 复制代码 |
1.*/5 * * * * /usr/bin/curl -o temp.txt /myscript.php |
下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。"-O temp.txt"表示输出会发送到临时文件。
代码如下 | 复制代码 |
1.*/10 * * * * /usr/bin/wget -q -O temp.txt /myscript.php |
效果图
index.php文件
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> SWFUpload.onload = function () { // Button Settings // The event handler functions are defined in handlers.js swfu = new SWFUpload(settings); </script> <div id="content"> <h2>SWFObject Demo</h2> |
核心处理程序php代码
代码如下 | 复制代码 |
if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { |
swfUpload注意事项
swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。
上传页的JS里面,可以获取当前的SESSION_ID的。
例如上传页的JS中:
代码如下 | 复制代码 |
post_params: {"PHPSESSID": "<?php echo session_id(); ?>"}, |
在验证的判断页中:
代码如下 | 复制代码 |
if (isset($_POST["PHPSESSID"])) { |
(这一段是网上的注释:在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。)
完整实例下载地址:http://file.111cn.net/download/2013/05/14/swfupload.zip
相关文章
- 这篇文章主要介绍了Vue组件跨层级获取组件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-28
- 今天我们来给大家介绍下在Vue开发中我们经常会碰到的一种需求场景,本文主要介绍了Vue动态查询规则生成组件,需要的朋友们下面随着小编来一起学习学习吧...2021-05-27
- 这篇文章主要介绍了js组件SlotMachine实现图片切换效果制作抽奖系统的相关资料,需要的朋友可以参考下...2016-04-19
- 这篇文章主要介绍了vue中如何使用element的日历组件,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-30
- 这篇文章主要介绍了Vue 过渡(动画)transition组件案例详解,非常不错,具有参考借鉴价值,需要的朋友参考下...2017-01-26
- 这篇文章主要介绍了Vue多选列表组件深入详解,这个是vue的基本组件,有需要的同学可以研究下...2021-03-03
- 最近看到提示IDEA提示升级,寻思已经有好久没有升过级了。升级完毕重启之后,突然发现好多错误,本文就来介绍一下如何解决,感兴趣的可以了解一下...2021-07-14
- 在网页中,经常见到进度条效果,那么这些个性的进度条组件效果是怎么实现的呢,下面脚本之家小编给大家分享Bootstrap进度条组件知识详解,感兴趣的朋友要求学习吧...2016-05-04
- 这篇文章主要为大家详细介绍了vue递归实现自定义tree组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-20
- 这篇文章主要介绍了Vue 组件复用多次自定义参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
- 这篇文章主要介绍了js中flexible.js实现淘宝弹性布局方案,需要的朋友可以参考下...2015-12-25
- 这篇文章主要介绍了Vue父子组件传值的一些坑,帮助大家更好的理解和使用vue父子组件,感兴趣的朋友可以了解下...2020-09-16
使用Angular CDK实现一个Service弹出Toast组件功能
本文主要写用cdk实现一个简单的Toast组件,使用的是cdk中的overlay模块,需要手动安装环境,具体安装方法及相关实现代码跟随小编一起看看吧...2021-07-28- 这篇文章主要为大家详细介绍了Bootstarp创建可折叠组件的对应方法,以实例为大家分享了Bootstrap折叠组件,感兴趣的小伙伴们可以参考一下...2016-02-26
- Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架,主要基于 HTML、CSS、JAVASCRIPT 的。接下来通过本文给大家介绍BootStrap 附加导航组件的知识,感兴趣的朋友一起学习吧...2016-07-29
- 这篇文章主要介绍了anaconda升级sklearn版本的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
- 这篇文章主要为大家详细介绍了C#控制台程序使用Log4net日志组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
Android Gradle Plug 4.1.0 升级后gradle获取manifest位置失败问题解决
这篇文章主要介绍了Android Gradle Plug 4.1.0 升级后gradle获取manifest位置失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-18解析element-ui中upload组件传递文件及其他参数的问题
这篇文章主要介绍了element-ui中upload组件如何传递文件及其他参数,分析一下我使用element-ui遇到的问题以及解决方法,需要的朋友可以参考下...2021-11-10- 高阶组件就是接受一个组件作为参数并返回一个新组件(功能增强的组件)的函数。这里需要注意高阶组件是一个函数,并不是组件,这一点一定要注意,本文给大家分享React 高阶组件HOC使用小结,一起看看吧...2021-06-13