libcurl的http的get请求简单例子

上一篇文章记录了关于curl这个库的简单的安装操作,这里,结合官方给出的例子,弄一个简单的curl的http的get请求的简单例子程序。

需要解决的问题
1.不同网页的内容长度不一样,如何定义获取的大小?
2.异常的处理

问题解决方案
针对第一个问题,使用在默认的自定义回调函数中使用内存复制和内存动态调整的方式解决
针对第二个问题,比较简单,通过判断返回的状态信息,及时调用curl内部的清理函数

代码实现步骤逻辑
1.定义一个头文件,这里假设为web.h具体的内容如下

//
// Created by rain on 2017/3/12.
//

#i[......]

Read more

centos下curl自动安装

在使用c语言进行编写采集程序的时候,为了方便,我们通常会使用一些比较不错的网页通信库,比如说curl就是不错的选择。这里我们来简单记录一下centos下,curl库的自动安装方式,当然我们这里是从github上进行下载和安装的。如果你访问不了github,那么只有自己去官网看看是否有源码下载了哦。废话不多说,直接附上一个通用的shell脚本。我这边取名叫pre_install.sh。然后就可以执行它,自动安装curl了。

#!/bin/sh

tmp_dir='./tmp_install'

yum install -y pcre libxml2 git au[......]

Read more

linux下使用makefile管理多个c目录文件

之前都是一个目录下写c代码,编译自然简单一点点。现在尝试学习多目录下的makefile的使用。虽然不是非常的完美。但是总体来说,把c源码文件和编译结果的object目标文件分开了。也算一种方式吧。
drwxr-xr-x. 2 root root 4096 3月 8 21:07 bin
drwxr-xr-x. 2 root root 4096 3月 8 19:56 include
-rw-r–r–. 1 root root 547 3月 8 21:00 makefile
drwxr-xr-x. 2 root root 4096 3月 8 21:07 obj
drw[……]

Read more

MAC安装brew工具

平时玩的服务器都是centos,所以有些安装习惯了yum的方式,整了一个mac简单的记录一下它的一个类似的包管理工具,就是brew了。安装brew也非常简单,一个命令就可以搞定了。

curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1

再简单记录一下,一个brew的简单的用法,首先是搜索软件,这里以nginx为例。具体方式如下

brew search nginx

然后可以进行安装,通过下面的方式

sudo brew install nginx[......]

Read more

php7进行安装sphinx简单记录

如果你是php5版本,可以按照下面的步骤进行安装完成。

wget https://codeload.github.com/skvadrik/re2c/tar.gz/0.16
mv 0.16 re2c.0.16.tar.gz
tar -xzvf re2c.0.16.tar.gz
cd re2c-0.16/re2c/
./autogen.sh
./configure --prefix=/usr/local/re2c
make && make install

cd /root
wget "http://pecl.php.net/get/sphinx-1[......]

Read more

centos下coreseek的安装和启动shell脚本

简单记录一下,centos下coreseek的安装和启动shell脚本,最好自己安装过mysql,并且启动它。

sudo yum install -y mysql mysql-server mysql-devel automake autoconf libtool
wget "http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz"
tar -xzvf coreseek*.tar.gz
cd coreseek-3.2.14
cd mmseg*
sudo aclocal
sudo libt[......]

Read more

Linux的shell使用grep结合sed进行替换字符串

简单记录一下,Linux的shell使用grep结合sed进行替换字符串。可以通过下面的命令进行递归替换一个目录下的所有文件

sed -i "s/HttpServer::\$files/\$_FILES/g" `grep -rl --exclude-dir=.svn 'HttpServer::$files'`

简单的进行说明一下上面的命令

grep -rl

中的参数r是递归,l是显示为目录全路径,–exclude-dir是为了排除一个目录。后面跟着的是具体的包含某一个特定字符串。然后把内容交给sed。因为是使用正则所有把$进行了转义了一[……]

Read more

swoole结合php的pdo mysql模式出现MySQL server has gone away

最近在弄关于swoole作为web服务,使用swoole的http服务,然后nginx转发php请求给swoole的东西。遇到一个问题是,长时间页面没有操作出现类似MySQL server has gone away的提示信息。当然,这个其实不是swoole的问题,任何驻留进程在调用mysql链接长时间没有操作都是会出现类似问题的。关键在于mysql的机制,他在发现某一个mysql的链接线程超过my.cnf的配置中的wait_timeout的时候,那么链接就会被释放了。那么由于swoole等长驻留进程保留的mysql链接自然就无效了。当然你可能会说把wait_timeout设置长一点。其实这个[……]

Read more