IntelliJ IDEA 配置 xdebug(Windows 环境)

xdebug 是 PHP 的 extension(插件?),我们使用它来调试 PHP 程序,在 Windows 上它就是一个 dll 文件。

  1. 确定下电脑上 php 的版本。编写一个 info.php 内容如下:

    在浏览器中访问 info.php

    我电脑上的 php 版本是 5.6.35(32位)
  2. 下载安装 xdebug
    一定要下载对应 PHP 的版本,下载页面:https://xdebug.org/download.php
    我的 PHP 是 5.6.35(32位),所以我要下载的是:php_xdebug-2.5.3-5.6-vc11.dll
  3. 配置 php.ini
    我们得告诉  php 要使用的 xdebug 插件在什么地方,打开 php.exe 所在路径的 php.ini(例如 c:\xampp\php\php.ini)文件,增加几行(注意,zend_extension 指向你下载的 xdebug dll 的路劲):
  4. 验证 xdebug 安装
    重启下 Apache,再访问 info.php 下,你应该能看到 xdebug 相关
    打开 IDEA 的 PHP 配置,你应该能看到 Debugger 的信息,注意 PHP 路径旁边有个刷新按钮,你可能需要点击才能看到 Debugger 信息。

  5. 安装浏览器的 Xdebug helper 扩展程序
    这个扩展程序在 Chrome 和 Firefox 上都有的。安装完成后,访问 info.php 页面,把 xdebug helper 设置成 debug
    同时要打开 IDEA 的侦听


    设置好断点,然后在浏览器刷新 info.php 页面……终于可以啦

解决 XAMPP + Windows 问题:Access Forbidden Error 403

配置好这 httpd-vhosts.conf、httpd.conf 和 hosts 文件

httpd-vhosts.conf

在 C:\xampp\apache\conf\extra\httpd-vhosts.conf 增加你需要的 virtual host,设置好路径:

<VirtualHost xshell.com:80>
DocumentRoot “E:/work/python/test/shell”
ServerName xshell.com
<Directory “E:/work/python/test/shell”>
#Order allow,deny
#Allow from all
Require all granted
</Directory>
</VirtualHost>

httpd.conf

在 C:\xampp\apache\conf\httpd.conf 把路径加入:

<Directory “E:/work/python/test/shell”>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>

hosts

最后修改 C:\Windows\System32\drivers\etc\hosts 把域名解析到本机:

127.0.0.1 xshell.com

用 .htaccess 保护好 WordPress

保护 .htaccess

保护 wp-config.php

/wp-content/uploads

禁止 php 在这个目录下执行

 

一分钟搞定 Python 程序的内存泄漏问题

如果实在搞不定的话就放弃吧……真的……时间宝贵,项目又这么紧,没时间给你研究学习内存泄漏的问题。

很多时候,一个段程序循环 1000 次看上去没有问题,但 1000000 次问题就出来了,跑一天没问题,但跑一星期内存泄漏问题就出来了。

你应该做的是把程序简单化,不在程序内实现 loop ,而是应该 loop 执行 script。像这样:

 

文件修改时自动重新运行 Celery 的 Worker

下面介绍实现 autoreload 两种方式:

  • 使用 Watchdog

    Watchdog 的 watchmedo 命令可以监控某个目录下的文件修改,重新运行子进程。我们可以利用它实现 Celery worker 的自动重新运行。

你可以直接使用 start-celery-for-dev.py ,它就是基于 watchdog 实现的。

  • 使用 Django
    Django 本身有个机制是监控程序文件改变然后自动重新运行 runserver 命令,我们可以利用这个机制来实现:

解决 Windows 上运行 Celery 4.1 问题:ValueError: not enough values to unpack

Celery 4.1 的这个问题只在 Windows 上有,Celery 4.1 开发环境所限并不能完美兼容 Windows

这个问题有三解决方法:

  1. 使用别的 pool
    在创建 worker 时使用别的 pool,例如 eventlet、solo

    celery -A tasks worker –loglevel=info –pool=eventlet

  2. 设置环境变量 FORKED_BY_MULTIPROCESSING
    在创建 worker 时设置一下环境变量

    set FORKED_BY_MULTIPROCESSING=1

  3. 使用旧版本的 Celery

     

解决 RabbitMQ Windows 安装问题 TCP connection succeeded but Erlang distribution failed

在 Windows 上安装完 RabbitMQ 后,用命令查看状态:
rabbitmqctl status
发现错误:

错误原因:Windows 上安装后会运行 RabbitMQ Service,这个服务运行使用的 Erlang Cookie 和登录用户使用的 Erlang Cookie 不匹配导致的。

RabbitMQ Service 使用的 Cookie 是:

C:\Windows\System32\config\systemprofile\.erlang.cookie

用户使用的 Cookie 是

C:\Users\Administrator\.erlang.cookie

把 RabbitMQ Service 的 Cookie 文件复制覆盖到用户的 Cookie 就可以了。

还有一个方法就是:停止 RabbitMQ Service,手动运行 rabbitmq-server.bat

Python 多线程然并卵

真的,在 Python 里多线程(multiple threading)没什么卵用的,因为有 GIL 的存在。

在 Python 里如果需要多任务的话,一定要选择多进程(multiple processing)+ Green threads(greenlet/twisted/asyncio/…)的方式。

Green threads 一定要做。

其实也别实现什么多进程了,直接多运行几个 main.py 就好了。