CTools 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
CTools 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: LGPL
开发语言: C/C++
操作系统: 跨平台
收录时间: 2018-07-02

CTools工具库

简介

使用 C 语言开发的工具库,工具宗旨:使用最少的代码完成最多的工作 所以我启动了一个工具库的项目,为了让更多的逻辑层的代码减少,增加代码的可靠性。

下载

https://github.com/liqiongfan/ctools

安装

1、下载

git clone https://github.com/liqiongfan/CTools.git

2、Makefile

/usr/path_to_php/bin/phpize
./configure --with-php-config=/usr/path_to_php/bin/php-config

3、编译与安装

make -j
sudo make install -j

4、 启用扩展

echo 'ctools.so' >> /usr/path_to_php/php.ini

一个便于WEB开发的工具库:包含多个组件:线程、进程、数组等,特性正在丰富中

示例

线程

开启一个线程执行耗时操作(asyncRun方法的代码与后面的代码是同时运行):

$thread = new CTool\CThread();

$thread->asyncRun( function( ){
    echo "I'm doing the job in thread.";
    sleep(5);
} );

echo "I'm the main thread";
sleep(5);

asyncRun方法可以调用多次来生成多个线程:

$thread = new CTool\CThread();

$thread->asyncRun( function( ){
    echo "Yes, one thread." . PHP_EOL;
} );

$thread->asyncRun( function(){
    while(1)
    {
        echo 'Yes, three thread. ' . PHP_EOL;
    }
} );
$thread->asyncRun( function(){
    while(1)
    {
        echo 'Yes, two thread. ' . PHP_EOL;
    } 
} );

echo "I'm the main thread";
sleep(5);
$thread->killMainThread();

进程

生成一个子进程去完成任务,子进程通过线程来完成耗时操作:

$thread = new CTool\CThread();
$process = new CTool\CProcess();
$ret = $process->fork();

if ($ret == 0)
{
    $thread->asyncRun( function(){
        while(1)
        {
            echo 'Yes, three thread. ' . PHP_EOL;
        }
    } );
    $thread->asyncRun( function(){
        while(1)
        {
            echo 'Yes, two thread. ' . PHP_EOL;
        } 
    } );
    echo 'child';
    while(1)
    {
        echo 'Yes. child' . PHP_EOL;
    }
}
else
{
    echo 'Yes';
    sleep(5);

    $process->kill($ret);
}

每次调用fork都会生成一个进程,fork调用的返回值0表示当前是子进程,大于0是父进程(返回值是子进程的id),通过调用kill函数来终止进程

$process = new CTool\CProcess();
$process->kill($pid);

数组

1、数组的键与值的合并

$arr = [
    '1' => 'hello', 
    "version" => 'world', 
    2 => 323, 
    false,
    true,
    "hello" => false
];

$carray = new CTool\CArray();

print_r($carray->combineKeyValue( $arr ));

输出如下:

Array
(
    [0] => 1hello
    [1] => versionworld
    [2] => 2323
    [3] => 3false
    [4] => 4true
    [5] => hellofalse
)

combineKeyValue方法的第二个参数是 bool 类型,表示是否转换 bool值:

$arr = [
    '1' => 'hello', 
    "version" => 'world', 
    2 => 323, 
    false,
    true,
    "hello" => false
];

$carray = new CTool\CArray();

print_r($carray->combineKeyValue( $arr, true ));

输出如下:

Array
(
    [0] => 1hello
    [1] => versionworld
    [2] => 2323
    [3] => 3
    [4] => 41
    [5] => hello
)

2、计算数组某一列的和

$arr = [
	[
		'id' => 1,
		'age' => 25
	],
	[
		'id' => 2,
		'age' => 23
	],
	[
		'id' => 4,
		'age' => 28
	]
];

echo CTool\CArray::columnSum($arr, 'id');

输出如下

7

参数过滤

1、过滤参数

echo CTool\CFilter::filter("hello", function($value){
    return 'world' . strtoupper($value) . PHP_EOL;
});

输出如下:

worldHELLO
function changeW($value)
{
    $value[2] = 'T';
    return $value;
}

echo CTool\CFilter::filter("world", 'strtoupper|strtolower|changeW'));

输出如下:

woTld
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

CTools 的相关资讯

还没有任何资讯

CTools 的相关博客

CTools (Java常用工具类)

package com.jeecms.cms; import java.io.Reader; import java.security.NoSuchAlgorithmException; import java.sql.Clob; i...

drupal views 限制汉字输出长度

需要修改views.module模块: 一、增加一个函数 //截取中文字符串 function gbsubstr($gbk, $start, $len) { $tmpstr = ""; $s...

使用PhoneGap,配合 Drupal 7, HTML5, CSS, jQuery Mobi...

PhoneGap允许你使用HTML5,CSS,Javascript来创建移动应用程序。而且是跨平台的应用程序,应用可以在Android,苹果的IOS(iPh...

使用 Environment Indicator 模块区分不同的 Drupal 环境

  每个 Drupal 网站建设人员到了某个时期,都会有误将线上站点当做本地站点进行修改的经历。尤其是在浏览器中打开了几十个页...

使用 Environment Indicator 模块区分不同的 Drupal 环境

  每个 Drupal 网站建设人员到了某个时期,都会有误将线上站点当做本地站点进行修改的经历。尤其是在浏览器中打开了几十个页...

12 Drupal 7 Modules That You Absolutely MUST Have

Yeah, this type of post is so over done. I know. But after doing a couple of Drupal 7 sites (and working on a couple ...

CTools 的相关问答

还没有任何问答,马上提问

评论 (1)

加载中
跨平台吗?
07/14 11:18
回复
举报
#CTools# 支持共享内存的IPC通信啦 https://gitee.com/josinli/ctools
2018/07/03 11:36
回复
举报
更多评论
1 评论
8 收藏
分享
返回顶部
顶部