分类 php 下的文章

[php]导入超大json文件

前言

在之前的文章《做一个twitter的插件玩玩》中,我做了一个批量删除推文(转发推文)的工具,该工具能够删除前3200条推文,但因为总数太多(4.3万条),api接口不支持获取所有的推文,所以我采用了下载的方式,直接下载了所有的推文。下载后需要导入到插件中,这样可以通过插件的功能进行对应的推文操作。

- 阅读剩余部分 -

[PHP]使用正则表达式替换所有的URL

 $preg = '/(https?|ftp|file):\/\/[-A-Za-z0-9+&@#\/\%\?=~_|!:,.;]+[-A-Za-z0-9+&@#\/\%=~_|]/';
        $translateText=preg_replace($preg,'1',$translateText);
        //$translateText= preg_replace("/(https:\/\/|http:\/\/|ftp:\/\/|www\.?|)(([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?){0,1}/","",$translateText); 
        echo $translateText;

[docker]使用docker-compose编排容器

前言

完整上线一个php+nginx+mysql+redis架构的网站中,我全程用docker搭建了基于php+nginx+mysql+redis的站点。
我目前遇到了一些问题:

  1. 重启很繁琐
  2. 修改配置,需要先docker stop,然后docker rm,再docker run,麻烦!
  3. 迁移到新站点麻烦。需要重复docker run,如果忘记了某一个命令,还要再查,麻烦!
    为此,我打算,将容器使用docker-compose进行编排,达到一次命令,运行所有内容。


- 阅读剩余部分 -

[typecho]找到非markdown脚本语言编写的文章

以前用uedit的时候,很多文章都是直接超文本标签嵌入,虽然typecho在前端渲染的时候会自动忽略,直接使用文章内容进行渲染,同时在编辑非markdown的文章的时候,也会提示,是否需要使用markdown进行编辑,那文章很多,不可能找到一篇才编辑一篇。

可以通过搜索mysql,找到要编辑的非markdown编辑的文章,上代码

SELECT * FROM `typecho_contents` where type='post' and text not like '<!--markdown-->%'

[docker]在docker中使用php composer

前言

我之前搭建了一个twitter转发推文的工具,稳定正常运行了半年,这几天却报错:

OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to

最初以为是ca证书的问题,然后开始折腾重新续期,重新申请,结果发现并不是,以为是TwitterOauth在这个库版本太低了,然后升级了一波,结果。。报!错!了!

Fatal error: Uncaught Error: Class 'Composer\CaBundle\CaBundle' not found in 
/www/twitter/\twitteroauth\src\TwitterOAuth.php:572 Stack trace: 
#0 /www/twitter/\twitteroauth\src\TwitterOAuth.php(620): Abraham\TwitterOAuth\TwitterOAuth->curlOptions() 
#1 /www/twitter/\twitteroauth\src\TwitterOAuth.php(557): Abraham\TwitterOAuth\TwitterOAuth->request('https://api.twi...', 'GET', 'Authorization: ...', Array, false) 
#2 /www/twitter/\twitteroauth\src\TwitterOAuth.php(490): Abraham\TwitterOAuth\TwitterOAuth->oAuthRequest('https://api.twi...', 'GET', Array, false) 
#3 /www/twitter/\twitteroauth\src\TwitterOAuth.php(467): Abraham\TwitterOAuth\TwitterOAuth->makeRequests('https://api.twi...', 'GET', Array, false) 
#4 /www/twitter/\twitteroauth\src\TwitterOAuth.php(232): Abraham\TwitterOAuth\TwitterOAuth->http('GET', 'h in /www/twitter/\twitteroauth\src\TwitterOAuth.php on line 572

好吧,原来是因为我没有编译,但是我生产环境,又是docker容器中,是不太想去安装git,composer这些玩意儿的。
这时候我灵机一动,是不是composer也有docker的镜像呢?
马上去是hub.docker中搜索,果然有,而且是官方维护的。那接下来就简单了。

安装

# docker pull composer:2.0.8

我以路径/www/twitter/twitteroauth为例子,直接运行:

docker run --rm --interactive --tty \
  --volume /www/twitter/twitteroauth/:/app \
  composer:2.0.8 install

稍等一会,就可以看到有vendor目录生成了。成功。

因为在docker中用php composer,php版本依赖没有保障,所以不推荐生产环境这么玩。
如果想持久化缓存,则可以将缓存映射到宿主机,比如这样:

docker run --rm --interactive --tty \
  --volume /www/twitter/twitteroauth/:/app \
  --volume /www/twitter/phpcomposer/:/tmp \
  composer:2.0.8 install

参考:
1.I used the TwitterOAuth library and got this error