Celery与redis的异步任务

从官方文档,熟悉其使用:
http://docs.celeryproject.org/en/master/getting-started/first-steps-with-celery.html

1.mkdir celerytest
2.cd celerytest
创建以下两个文件。
Tasks.py
from celery import Celery
# app = Celery(‘tasks’, broker=’amqp://guest@localhost//’)
app = Celery(‘tasks’, backend=’redis://localhost:6379/1′, broker=’redis://localhost:6379/0′)
# app = Celery(‘tasks’, broker=’redis://localhost:6379/0′) no result return

@app.task
def add(x, y):
return x + y

————
Test.py
from tasks import add
result = []
if __name__ == ‘__main__’:
for i in range(10):
for j in range(100):
result.append(add.delay(i, j))
for r in result:
print r.ready(),r.get()

在celerytest目录下执行以下命令
3.celery -A tasks worker –loglevel=info
4.运行test.py程序

解决windows下Composer因php_openssl扩展缺失而安装失败的问题

安装Composer提示如下错误:

原因是cmd.exe命令行模式控制php所使用配置和托盘菜单里的php.ini是两个不同的路径,因此造成开启托盘菜单里的openssl仍无法解决上述问题的假像。

因为找开php目录下的配置文件,去掉openssl的前面分号,然后重启服务,即可解决上述问题

PHPYII技术资源

http://www.getyiistrap.com/只是简单集合了boostrap。

http://yiibooster.clevertech.biz/,集合了boostrap3.x.x版,此外还集合了图片highchart,grid以及jquery UI等,文档也齐全,是比较不错的选择。

以上是yii1.x版本的相关资源。

以下是YII2.x版本的相关资源

http://www.yiifans.com/yii2/guide/中文手册

http://www.yiifans.com/这个论坛,好像是YII的推广论坛,其中的视频教程是非常棒的。

phantomjs生成调试信息

使用以下一组参数,可生成调试信息供GDB调试。

CFLAGS=-g CXXFLAGS=-g ./build.sh –qt-config ‘-webkit-debug’ –qmake-args “QMAKE_CFLAGS=-g QMAKE_CXXFLAGS=-g”

http://phantomjs.org/crash-reporting.html

SQL复杂查询最大组最大记录优化记录

 

SELECT w.*,p.id,p.price FROM wareprice_01 p,(SELECT a.wareid,a.platform,`value` attr,attrid,title,url,shopid FROM wareattr_01 a,ware_01 w

    WHERE a.wareid = w.wareid AND a.platform=w.platform AND (`value` LIKE ‘%月光石%’ OR title LIKE ‘%月光石%’) GROUP BY a.wareid) w

    WHERE w.wareid=p.wareid AND w.platform=p.platform AND p.id=(SELECT MAX(id) FROM wareprice_01 t WHERE p.wareid=t.wareid);

 

SELECT nw.*,np.id,np.price FROM (SELECT price,platform,id,wareid FROM wareprice_01 p1 WHERE id=(SELECT MAX(id) FROM wareprice_01 p2 WHERE p1.wareid=p2.wareid)) np,(SELECT a.wareid,a.platform,`value` attr,attrid,title,url,shopid FROM wareattr_01 a,ware_01 w

    WHERE a.wareid = w.wareid AND a.platform=w.platform AND (`value` LIKE ‘%月光石%’ OR title LIKE ‘%月光石%’) GROUP BY a.wareid) nw WHERE np.wareid=nw.wareid AND np.platform=nw.platform;

 

SELECT s.*,wp.* FROM shop s,(SELECT nw.*,p.id,p.price FROM wareprice_01 p,(SELECT a.wareid,a.platform,`value` attr,attrid,title,url,shopid FROM wareattr_01 a,ware_01 w WHERE a.wareid = w.wareid AND a.platform=w.platform AND (a.`value` LIKE ‘%月光石%’ OR title LIKE ‘%月光石%’) GROUP BY a.wareid) nw  WHERE nw.wareid=p.wareid AND nw.platform=p.platform AND p.id=(SELECT MAX(id) FROM wareprice_01 p2 WHERE p.wareid=p2.wareid)) wp WHERE s.id = wp.shopid;

 

SELECT * FROM wareprice_01 w1 WHERE id=(SELECT MAX(id) FROM wareprice_01 w2 WHERE w1.wareid=w2.wareid);

SELECT * FROM wareprice_01 w1 WHERE id IN (SELECT MAX(id) FROM wareprice_01 w2 WHERE w1.wareid=w2.wareid) LIMIT 5000;

SELECT * FROM wareprice_01 w1 GROUP BY wareid LIMIT 5000;消耗比较高

jquery异步请求的超时处理

方法一:加timeout定时器的get或getJSON函数。

方法二:利用adjax函数处理。

function get_device_list(){

{% autoescape off %}

svcs ={{servers}};

{% endautoescape %}

for (var i=0; i< svcs.length; i++)

{

var svc = svcs[i];

var loadid = ‘#tryloading’ + i.toString();

var url = ‘http://’ + svc + ‘/listalldevices.json’;

if(0){

$.get(url, {}, handle_device_list(svc, loadid));

setTimeout(handle_device_list_error(svc, loadid), 10000);

}else{

var req = {‘url’:url,

‘data’:{},

‘type’:’GET’,

‘datatype’:’json’,

‘success’:handle_device_list(svc, loadid),

‘error’:handle_device_list_error(svc, loadid)};

$.ajax(req);

}

}

}

href=”#”形式使用推荐

在bootstrap中,常使用这样的方式来表示hover和normal的状态。但这样可能会导致页面存在页面跳转的刷新效果,这种效果不一定是符合我们预期,所以有时需要屏蔽这种效果,因此推荐如下两种使用方法。

第一种:<a href=”javascript:void(0);” onclick=”function()”></a>
第二种:

<a href=”javascript:;” onclick=”function()”></a>

第一种void(0)值是计算一个空值,第二种是执行一个空js串(注意双引号内的冒号和逗号),在W3C中不推荐在href语句中执行JS脚本,因此使用onclick的方式响应本地脚本,才是符合W3C的推荐。