Sep17

【原创】TinyMCE开源文件管理插件推荐

Author: leeon  Click: 9760   Comments: 0 Category: javascript  Tag: tinymce,filemanager,responsive

     最近在编写自己的通用CMS系统,编辑器以前都是用的kindeditor,想换换口味,看了下百度推出的ueditor所见即所得编辑器,封装的文件管理插件很差很山寨,连最基本的文件管理删除功能都没有,这样对文件管理就很麻烦,而且还不能提供独立的文件管理功能来管理文件。

    索性研究了一下国外的编辑器,fckeditor/ckeditor编辑的文件管理能力不是很强大,看了下tinymce的文件管理插件相当高端大气上档次!但是他是收费的,没法用呀。搜索了一番发现一个tinymce高度集成的好插件“filemanager4tinymce”,最新的版本名字已经换成“responsive filemanager“名字了, http://www.responsivefilemanager.com/ 这个插件相比官方的收费插件一点都不弱,而且也提供了脱离tinymce对文件,图片,视频的管理能力,这样既可以高度整合到编辑器中,又可以不用在CMS中再写一套文件管理的后台功能,一举两得!

   关于这个插件跨域的问题,和其他编辑器中跨域的解决方案一致,在指定的地方添加document.domain即可,但是要注意他的php代码封装中对jquery和swfupload的js采取了走cdn外链的方式而且走的https协议,这样在国内网速的环境下打开管理页面会非常慢,所以找到 filemanager/dialog.php 文件搜索下里面的js引用,替换一下就好了。

Sep7

【原创】ganglia监控部署小记

Author: leeon  Click: 7040   Comments: 0 Category: 架构  Tag: ganglia,python,plugin,monitor,监控

最近在捣鼓研究ganglia,汇总分享一些可能遇到的问题:

1.为什么编译ganglia的时候加了with-python还是没有lib/ganglia的目录下出现modpython.so?

这个问题主要是注意两点:

(1)with-python后面跟的是python的二进制路径,比如:

./configure --with-python=/usr/local/python/bin/python2.7
(2)python的libpython.so 必须软链到系统可识别的动态库路径下,就算在/et/ld.so.conf下指定了python的so路径都不行。例如
ln -s /usr/local/python/lib/libpython2.7.so /usr/local/lib/libpython2.7.so

软链后也要在/etc/ld.so.conf 下把/usr/local/python/lib 添加进去。


2. ganglia 的很多扩展插件在最新的ganglia的tar包下已经有封装了,直接拿来用就好了,不需要到网上到处找。路径就在解压缩后的路径下,例如:

ganglia-3.5.0/gmond/moduels 这个目录是用来告诉加载perl,python,php的so扩展。提供如下三个脚本插件的运行环境和相关配置。 

ganglia-3.5.0/gmond/perl_moduels perl语言监控插件脚本

ganglia-3.5.0/gmond/php_moduels  php语言监控插件脚本

ganglia-3.5.0/gmond/python_moduels python语言监控插件脚本


具体的配置含义可以看官方的文档http://sourceforge.net/apps/trac/ganglia/wiki/ganglia_gmond_python_modules

Cchecklist

To confirm that your Ganglia installation has Python support correctly setup, double check the following:

  • gmond.conf has a line which reads something along the lines of include ("/etc/ganglia/conf.d/*.conf"). This is the directory where you should place configuration files for your Python modules as.pyconf files
  • modpython.conf exists in /etc/ganglia/conf.d - it contains a directive which will include the pyconf files
  • You have modpython.so in /usr/lib{64}/ganglia
  • The directory /usr/lib{64}/ganglia/python_modules exists. This is the directory where Python modules should be placed as .py files.

These things should be automatically done for you if you installed Python modules support via binary packages. If that is not the case please file a bug at the distribution's corresponding bug tracker.

Ubuntu 10.10 notes

Ubuntu 10.10 does not come with Python support for gmond fully setup. You will need to:

  • Create /etc/ganglia/conf.d/modpython.conf and make it look like https://sourceforge.net/apps/trac/ganglia/browser/trunk/monitor-core/gmond/modules/conf.d/modpython.conf.in - for instance:
    modules {
      module {
         name = "python_module"
         path = "/usr/lib(64)/ganglia/modpython.so"
         params = "/usr/lib(64)/ganglia/python_modules"
      }
    }
    
    include('/etc/ganglia/conf.d/*.pyconf')
  • Create the directory /usr/lib(64)/ganglia/python_modules
  • Ensure that /usr/lib(64)/ganglia/modpython.so already exists (Ubuntu 10.10 gets this one right when you install ganglia via apt)




Sep4

【原创】PHP中Sphinx长连接分析

Author: leeon  Click: 6862   Comments: 1 Category: php  Tag: sphinx.php,长连接,持久连接

SphinxClient::open

(PECL sphinx >= 1.0.3)

SphinxClient::open建立到搜索服务端的持久连接

说明

public bool SphinxClient::open ( void )

建立到搜索服务端的持久连接.

参数

此函数没有参数。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

今日在做PHP系统代码优化时,对sphinx的长连接做了一些分析发现php的sphinx api并不是我们想象中的那样会在php-fpm的fastcgi状态下一直与sphinx的searchd进程保持长连接,sphinx的api接口中open()方法仅仅提供了在一次会话请求中保证多个sphinx调用在单个php进程中是共用一个sphinx tcp连接通道,当php解释运行完,与sphinx的连接也会自动断开,而不是保持连接状态。

这篇帖子也佐证了楼主的这个想法:http://sphinxsearch.com/forum/view.html?id=7200

> So it seems that the definition of 'persistent connection' in Sphinx is different from
> persistent MySql connections when using a PhP API : the persistence is only across
> multiple calls *in the same php request execution* and not persistence within the client

> process i.e. across multiple php requests.


我们可以做一个这样的实验来证明我的观点:

给php增加sphinx.so扩展,然后写如下测试代码:

[code="php"]
$s = new SphinxClient();

var_dump($s);
$s->setServer('192.168.1.108','9312');
//$s->open();
var_dump($s->query('abxxxx'));
var_dump($s->query('abxxxx'));
[/code]

注意这里$s->open()先屏蔽,然后我们在cli状态下利用strace命令跟踪执行此php脚本,收集系统调用信息会发现:

在系统调用中出现了两次connect到192.168.1.108的请求。也就是说在没调用open方法的时候,在同一个php运行时中会导致两次对sphinx产生的tcp请求。

[code="plain"]
611 fcntl64(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
612 connect(3, {sa_family=AF_INET, sin_port=htons(9312), sin_addr=inet_addr("192.168.1.108")}, 16) = -1 EINPROGRESS (Operation now in progress)
613 select(4, NULL, [3], NULL, {60, 0}) = 1 (out [3], left {59, 999996})
614 fcntl64(3, F_SETFL, O_RDONLY) = 0
615 send(3, "\0\0\0\1", 4, MSG_NOSIGNAL) = 4
616 recv(3, "\0\0\0\1", 4, 0) = 4
617 send(3, "\0\0\1\31\0\0\0\224\0\0\0\0\0\0\0\1", 16, MSG_NOSIGNAL) = 16
618 send(3, "\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6abxx"..., 140, MSG_NOSIGNAL) = 140
619 recv(3, "\0\0\1\31\0\0\0`", 8, 0) = 8
620 recv(3, "\0\0\0\0\0\0\0\2\0\0\0\5title\0\0\0\4text\0\0\0\2\0\0\0"..., 96, 0) = 96
621 close(3)
。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。
756 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
757 fcntl64(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
758 connect(3, {sa_family=AF_INET, sin_port=htons(9312), sin_addr=inet_addr("192.168.1.108")}, 16) = -1 EINPROGRESS (Operation now in progress)
759 select(4, NULL, [3], NULL, {60, 0}) = 1 (out [3], left {59, 999997})
760 fcntl64(3, F_SETFL, O_RDONLY) = 0
761 send(3, "\0\0\0\1", 4, MSG_NOSIGNAL) = 4
762 recv(3, "\0\0\0\1", 4, 0) = 4
763 send(3, "\0\0\1\31\0\0\0\224\0\0\0\0\0\0\0\1", 16, MSG_NOSIGNAL) = 16
764 send(3, "\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6abxx"..., 140, MSG_NOSIGNAL) = 140
765 recv(3, "\0\0\1\31\0\0\0`", 8, 0) = 8
766 recv(3, "\0\0\0\0\0\0\0\2\0\0\0\5title\0\0\0\4text\0\0\0\2\0\0\0"..., 96, 0) = 96
767 close(3) = 0
768 write(1, "array(9) {\n", 11array(9) {


[/code]

然后我们取消open调用的注释,继续strace,会发现这时候依然是连续调用两次query方法,但在第一次query调用后api不会立即close掉tcp连接,而是继续给到第二次query调用使用。

[code="plain"]
611 fcntl64(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
612 connect(3, {sa_family=AF_INET, sin_port=htons(9312), sin_addr=inet_addr("192.168.1.108")}, 16) = -1 EINPROGRESS (Operation now in progress)
613 select(4, NULL, [3], NULL, {60, 0}) = 1 (out [3], left {59, 999996})
614 fcntl64(3, F_SETFL, O_RDONLY) = 0
615 send(3, "\0\0\0\1", 4, MSG_NOSIGNAL) = 4
616 recv(3, "\0\0\0\1", 4, 0) = 4
617 send(3, "\0\4\0\0\0\0\0\4\0\0\0\1", 12, MSG_NOSIGNAL) = 12
618 select(4, [3], NULL, [3], {0, 0}) = 0 (Timeout)
619 send(3, "\0\0\1\31\0\0\0\224\0\0\0\0\0\0\0\1", 16, MSG_NOSIGNAL) = 16
620 send(3, "\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6abxx"..., 140, MSG_NOSIGNAL) = 140
621 recv(3, "\0\0\1\31\0\0\0`", 8, 0) = 8
622 recv(3, "\0\0\0\0\0\0\0\2\0\0\0\5title\0\0\0\4text\0\0\0\2\0\0\0"..., 96, 0) = 96
623 write(1, "array(9) {\n", 11array(9) {
624 ) = 11
[/code]

Jul14

【原创】Nutch2.2 部署问题小记

Author: leeon  Click: 7078   Comments: 0 Category: 架构  Tag: nutch,2,2,mysql

最近Nutch出新的2.2.1版本了,上个月才用2.1这个月就已经2.2.1,版本更新实在太快,以至于升级到新版本又遇到不少坑。索性再次记录一下一些比较麻烦的问题。

1. 从2.2版本开始对mysql数据源的配置就和2.1的默认支持不同了,这个地方的调整一定要严格遵守http://nlp.solutions.asia/?p=362 此文的说明对配置文件进行修改。

2. 切忌一定要在ivy文件修改后再去执行ant命令,这样才能自动的去下载指定的gora-sql版本的jar文件提供给mysql用,要不然nutch会每次执行命令提示找不到jdbc库。

3. 2.2版本的抓去命令没有2.1来的方便,而且目前测试发现处理性能比2.1要慢不少,但是内存占用要小一些。

分类

标签

归档

最新评论

Abyss在00:04:28评论了
Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
shallwe99在10:21:17评论了
【原创】如何在微信小程序开发中正确的使用vant ui组件
默一在09:04:53评论了
Berkeley DB 由浅入深【转自架构师杨建】
Memory在14:09:22评论了
【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
leo在17:57:04评论了
shell中使用while循环ssh的注意事项

我看过的书

链接

其他

访问本站种子 本站平均热度:8823 c° 本站链接数:1 个 本站标签数:464 个 本站被评论次数:94 次