- 博客(18)
- 收藏
- 关注
原创 使用 vagrant + docker 搭建 symfony 开发环境
1.安装 virtualbox 与 vagrant官网直接下载安装包,注意 virtualbox 要使用 5.1 版本,vagrant 使用最新版本。2.下载 vagrant boxvagrant box add [name] [镜像]vagrant box add ubuntu ubuntu/xenial64下载速度会很慢,建议复制链接到迅雷里面下载。3.使用 vagrant-...
2018-11-18 20:59:15
482
原创 提升 Vagrant 环境下共享目录性能
最近接触的是部署在 docker 上的 symfony 项目,在本地搭建了 vagrant,打算使用共享目录来开发。结果发现项目响应时间超慢,大约有 4-6 秒不等。由于都是在虚拟机里跑的,所以问题首先定位到 vagrant 与 windows 的工项目录这里。后来在网上看到 vagrant 有个插件,可以在 windows 上使用 nfs 文件系统。插件安装:vagrant plugin...
2018-11-14 20:13:51
1165
原创 使用 swoole_process 实现 PHP 进程池
swoole_process 主要是用来代替 PHP 的 pcntl 扩展。我们知道 pcntl 是用来进行多进程编程的,而 pcntl 只提供了 fork 这样原始的接口,容易使用错误,并且没有提供进程间通信以及重定向标准输入输出的功能。而 swoole_process 则提供了比 pcntl 更强大的功能,更易用的API,使PHP在多进程编程方面更加轻松。本文使用 swoole_proce...
2018-10-27 18:38:04
1402
原创 PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
在一般的 Server 程序中都会有一些耗时的任务,比如:发送邮件、聊天服务器发送广播等。如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢。Swoole 的 TaskWorker 进程池可以用来执行一些异步的任务,而且不会影响接下来的任务,很适合处理以上场景。那么什么是异步任务呢?可以从下面的图示中来简单了解一下。(来源于网络,侵删)我们上一个 Swoole 的文章介绍了如...
2018-10-16 21:26:41
599
原创 循序渐进学爬虫:多线程+队列爬取豆瓣高分计算机类书籍
上一次的抓取豆瓣高分计算机书籍的案例,采用的是完全同步的方式。即单个线程依次执行完所有的逻辑,这样存在的问题就是我们的爬虫程序会非常的慢。所以本文作为上一次案例的升级版本,通过循序渐进、动手实践的方式来达到更好的学习效果。相对于上次的案例,本次主要采用多线程+队列的方式来实现。用到的包:import requestsfrom bs4 import BeautifulSoupimport...
2018-10-13 09:17:59
386
原创 Swoole 初探:环境搭建与入门案例
Swoole 是一个 php 的扩展,它的核心目标就是解决 php 在实现一些高访问 server 服务中可能遇到的一系列问题,这些问题用原生的 php 往往并不能很方便高效的解决。对于这一问题企业一般多会采用其他技术,比如使用 java 或者其他语言。 但是有了 Swoole 之后,由于底层全是用 C 语言实现,其出色的性能深受追捧。由于以前 php 适用场景的局限性比较大,所以会有说 Swo...
2018-10-10 09:17:50
255
原创 Python爬虫案例:抓取豆瓣编程类高评分书籍
对于很多正在学习计算机的朋友来说,选择合适的学习材料是非常重要的。本文将通过 Python 来爬取豆瓣编程类评分大于 9.0 的书籍。此案例很适合入门爬虫的朋友学习,总共也就 3 个函数。下图是最终的结果:下面进入正题:一、采集源分析:首先我们找到豆瓣的编程类书籍网址:https://book.douban.com/tag/编程进入网址之后我们翻到最下面的分页导航:通过...
2018-10-07 17:22:30
1763
原创 Python 爬虫利器 Beautiful Soup 4 之文档树的搜索
前面两篇介绍的是 Beautiful Soup 4 的基本对象类型和文档树的遍历, 本篇介绍 Beautiful Soup 4 的文档搜索搜索文档树主要使用两个方法 find() 和 find_all()find_all():find_all 是用于搜索节点中所有符合过滤条件的节点那么它支持哪些过滤器呢?过滤器的类型:字符串正则表达式列表True方法字符串:查找文档中所...
2018-10-04 12:27:47
256
原创 Python爬虫利器:Beautiful Soup的使用(二)
上一篇文章介绍了 BeautifulSoup 的安装以及基本对象类型。本次介绍使用 bs4 对 HTML 文档树的遍历。先把本文用到的例子贴上:str = """<!DOCTYPE html><html><head><title>bs4 test<
2018-09-28 21:23:21
640
原创 Python爬虫利器:Beautiful Soup的使用(一)
上一次的爬取网易新闻案例,我们使用到了一个解析 HTML 的库:Beautiful Soup。本次跟大家分享一下关于这个库的一些用法。Beautiful Soup 简介:Beautiful Soup 是一个可以从 HTML 或者 XML 文档中提取数据的 Python 库,它提供一些简单的函数可以很方便的从文档上提取所需要的数据。由于目前最新版本是 4.4.0,所以一般被简称为 bs4。安...
2018-09-26 17:02:41
389
原创 小白也能懂得python爬虫入门教程
此文属于入门级级别的爬虫,老司机们就不用看了。本次主要是爬取网易新闻,包括新闻标题、作者、来源、发布时间、新闻正文。首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻。然后鼠标右键点击查看源代码,发现源代码中并没有页面正中的新闻列表。这说明此网页采用的是异步的方式。也就是通过api接口获取的数据。那么确认了之后可以使用F12打开谷歌浏览器的控制台,点击Network,我...
2018-09-22 22:56:22
31833
4
原创 PHP中的生成器(yield)使用
在讲解生成器之前先介绍一下迭代器:在 PHP 中,通常情况下遍历数组使用 foreach 来遍历。如果我们要想让一个对象可以遍历呢?PHP 为我们提供了 Iterator 接口,只要实现了这个接口,这个对象就可以通过 foreach 来迭代。例子如下:class myIterator implements Iterator { private $index = 0; pr...
2018-09-20 21:29:52
672
原创 Python基础学习之五大常用数据类型
刚开始学习一门编程语言,除了了解运行环境与语言类型之外,最基本还是从该语言的基本数据类型开始学起。Python六大常用数据类型:int 整数float 浮点数str 字符串list 列表tuple 元组dict 字典讲解这些先说一下python中的变量与变量名。变量其实本质上是一个具有特殊格式的内存,变量...
2018-09-18 22:52:53
271
原创 Python基础系列:初识python引用计数与弱引用
写在前边:之前的socket系列就告一段落,主要是对自己所学做一个总结与记录。接下来我打算基于libevent写一个支持并发的HTTP服务器。因为之前学习群里大神早就开发过一个同时支持HTTP与WebSocket的服务器,我看了之后感觉很有兴趣,所以才买了本网络编程的书来看。我打算参考他的来写一个精简版,只支持HTTP。等写完了可以分享给大家,虽然不能运用到生产环境,但是我相信学习完源...
2018-09-15 22:35:28
223
原创 一次读懂 Select、Poll、Epoll IO复用技术
“ 阅读本文大概需要 6 分钟。”我们之前采用的多进程方式实现的服务器端,一次创建多个工作子进程来给客户端提供服务。其实这种方式是存在问题的。可以打个比方:如果我们先前创建的几个进程承载不了目前快速发展的业务的话,是不是还得增加进程数?我们都知道系统创建进程是需要消耗大量资源的,所以这样就会导致系统资源不足的情况。那么有没有一种方式可以让一个进程同时为多个客户端端提供服务?接下来要...
2018-09-14 10:09:33
178
原创 PHPSocket编程之多进程的回声服务器
上次的回声服务程序有个很大的缺点,就是只能同时连接一个客户端,这明显是不合理的。所以这次采用多进程的方式来实现同时为多个客户端提供服务。以下是最终的效果: (通过 ps 命令可以查看到我们创建的工作进程) (通过 xshell 打开多个终端,并向服务程序连接多个客户端) 在开始编码之前,先介绍一下什么是进程。进程,即正在运行的...
2018-09-12 22:10:05
280
原创 基于Socket实现简单的回声服务器
上一篇文章是对socket编程的入门,这次我们基于socket实现一个简单的收发消息的服务。实现思路:先说服务端:接受客户端的连接读取客户端发送过来的信息将接受到信息发送给客户端客户端:首先连接到服务端读取用户输入将用户输入的信息发送给服务端发送之后将会接收到服务端返回来的信息由于PHP没有原生的从命令行接收用户输入的函数,所以这里通过以下方式来实现: ...
2018-09-09 18:02:39
816
原创 从零带你入门Socket编程
相信大部分的初中级PHP程序员平时写的业务代码占绝大多数,写厌了平时的增删改查,何不体验体验网络编程的魅力呢。学习网络编程能够很好的理解一些底层的网络通信,比如Apache、Nginx如何接受HTTP请求的,然后又是如何和PHP来进行交互的。Nginx为什么能处理高并发的请求?常听别人说的同步IO、异步IO、阻塞IO、非阻塞IO…等等到底是什么意思?相信你学习了网络编程之后就会对其有深刻的理解...
2018-09-08 22:26:53
380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人