IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者
首页 / 回忆未来[张宴]
IT 2020-02-01 14:36:16 / 累计浏览 2,500

PHPTS:一键免费搭建 Nginx + PHP + MySQL + Redis + Memcached 网站、APP、小程序服务器端运行环境

这篇讲的是如何在 Windows 上快速搭建网站服务器环境。传统方式需要手动安装和配置 Nginx、PHP、MySQL 等一堆组件,过程繁琐且容易出错,尤其是官方 Nginx for Windows 版本在连接数和性能模型上限制明显,往往只能用于测试。 文章介绍的 PHPTS 软件给出了一个“一键搞定”的方案。它将上述组件集成为一个安装包,并对关键的 Nginx 进行了深度优化——采用了 Windows IOCP 模型并支持多进程,将连接数上限从官方版本的 1024 大幅提升至 32768,使其在 Windows 上也能胜任生产环境。这解决了长期困扰 Windows 开发者的性能痛点。 除了作为本地开发环境,软件还定位为边缘计算平台。它可以运行在各类本地设备上,利用本地算力完成 AI、音视频处理等任务,减少对公有云的依赖,并支持与云服务组建混合云。对于需要在 Windows 下快速启动 Web 服务或探索本地化部署的开发者来说,这提供了一个免费且开箱即用的选择。

本机暂存
IT 2011-05-08 22:49:43 / 累计浏览 4,220

PHP在金山游戏运营中的应用

这篇讲的是金山游戏团队如何使用PHP高效支撑其官网与运营系统的技术实践。文章从一个实际问题切入:多开发者在Windows上编码,但测试和生产环境却在Linux,导致调试缓慢且易冲突。 作者分享了他们的核心解决方案。在团队协作上,他们利用Nginx与PHP分离的架构,让开发者在Windows本地修改代码,直接调用Linux服务器的PHP环境进行调试,并通过SVN钩子与优化后的自动同步脚本实现代码的快速集成与版本控制。为此他们还开发了XDevelop工具,一键配置这套跨平台开发环境。 在系统架构与运维方面,文章介绍了多项关键设计。为解决多环境配置难题,他们开发了专用PHP扩展与管理后台,统一了代码在不同环境下的配置。发布流程被封装成一个带版本管理和一键回滚功能的代码发布系统,并将发布权下放给项目负责人。在架构上,采用Nginx负载均衡与服务器集群池应对高并发,并对论坛、抢购等突发流量大的业务进行独立分组隔离。此外,他们通过将HTML缓存上移至Nginx层、使用Memcached进行Session共享,以及在php-cgi中增加预判断机制来防范代码篡改等措施,保障了系统的高性能与安全性。 整篇文章并非泛泛而谈,而是结合具体的开发工具、代码示例和架构图,详细复现了从开发调试到上线运维的全流程优化,展现了PHP在大规模游戏运营场景下的工程化落地经验。

本机暂存
IT 2010-10-07 08:27:34 / 累计浏览 5,300

用谷歌浏览器来当手机模拟器

这篇讲的是如何利用谷歌 Chrome 浏览器内置的功能,将其变身为一个轻量级的手机模拟器。 很多网站会通过 User-Agent 这个请求头来判断访问设备的类型,并返回对应的页面版本(比如给手机展示精简版的3G页面)。作者抓住了这个机制,分享了一个实用技巧:无需安装额外软件,只需通过特定的启动命令或 Chrome 开发者工具(DevTools),就能让浏览器以特定手机(例如安卓设备)的身份去访问网页。 具体来说,文章介绍了一种通过 Windows 运行命令行来启动特定模式 Chrome 的方法。这种方式对于前端工程师调试移动端网页适配、产品经理快速预览产品在手机上的显示效果非常方便。对于普通用户,如果你想在电脑上查看某个网站的手机版本界面,这同样是一个即学即用的小窍门,比反复缩放窗口要精准得多。 这个技巧的核心在于理解 User-Agent 的作用以及 Chrome 强大的可配置性,它用最直接的方式解决了“在桌面端预览移动端页面”这一常见需求。

本机暂存
IT 2010-09-09 21:53:27 / 累计浏览 4,160

为 MySQL 增加 HTTP/REST 客户端:MySQL UDF 函数 mysql-udf-http 1.0 发布

对于需要频繁与外部 Web 服务交互的数据库应用,传统的做法往往需要应用层作为中转,流程繁琐且效率不高。这篇讲的是一个能直接在 MySQL 内部解决问题的实用工具——mysql-udf-http 1.0 的发布。 作者张宴开发了这个 MySQL 用户自定义函数(UDF),核心思路是让数据库本身具备发起 HTTP 请求的能力。它提供了 `http_get()`、`http_post()`、`http_put()` 和 `http_delete()` 四个函数,覆盖了 RESTful API 的主要操作类型。这意味着你可以直接在 SQL 语句中调用这些函数,去请求或推送数据到外部服务。 目前项目支持 Linux 系统以及 MySQL 5.1.x 和 5.5.x 版本。这个工具将 HTTP 能力下沉到数据库层面,对于一些需要在数据库事务中直接同步外部状态的场景,或者构建轻量级数据库触发器应用来说,省去了应用层中转的麻烦,提供了一种更直接的技术选择。

本机暂存
IT 2010-06-27 22:24:52 / 累计浏览 11,020

Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记

这篇讲的是在 CentOS 5.4 这种较早的 Linux 环境下,如何让 PHP 5.2.x(以 FastCGI 模式运行)顺利连接上 SQL Server 2000 数据库。作者从实际的生产需求出发,核心方案是配置 FreeTDS 协议扩展来打通 PHP 与 SQL Server 之间的桥梁。 文章详细记录了从编译安装 FreeTDS 源码包开始的全过程,这其中涉及到版本选择、编译参数设置以及与 PHP 的集成配置。对于老系统而言,这种跨平台的数据库连接配置常会遇到驱动兼容性、路径设置等具体问题,作者的笔记正是针对这些实操环节展开,逐步讲解了关键的配置文件和步骤。 最终,通过正确的配置,PHP 脚本得以在 Linux 服务器上稳定访问远端的 SQL Server 数据库,解决了异构系统间的数据交互难题。整个过程对需要维护同类遗留系统的开发者来说,提供了一条清晰可行的技术路径。

本机暂存
IT 2010-05-22 12:55:02 / 累计浏览 3,420

再提供一种解决Nginx文件类型错误解析漏洞的方法

这篇讲的是针对Nginx文件类型错误解析漏洞的一种新应对思路。文章首先澄清,这个由80Sec曝光的严重漏洞,根源其实不在Nginx,而在PHP的PATH_INFO处理机制。攻击场景很明确:只要服务器允许用户上传文件(哪怕只是图片),攻击者就能通过构造类似“图片.jpg/任意.php”的URL,让服务器错误地执行图片文件内嵌的PHP代码,从而导致入侵。 文章重点梳理并分析了当时流行的三种临时修补方案。比如修改`cgi.fix_pathinfo`参数会破坏PATH_INFO伪静态,而Nginx规则匹配又可能误杀正常请求。作者指出,对于大型网站,更彻底的方法是将上传的文件分离到独立的、仅提供静态服务的图片服务器集群,从架构上隔绝风险。 因此,这篇文章的价值不仅在于复现了一个经典漏洞,更在于它对比了几种应急方案的代价与收益,并给出了一个更具架构性的解决思路,提醒我们在应对安全问题时,需要权衡功能、性能与安全性的平衡。

本机暂存
IT 2010-05-20 13:25:52 / 累计浏览 3,680

MySQL Infobright 数据仓库快速安装笔记[原创]

这篇笔记详细介绍了与MySQL集成的开源数据仓库软件Infobright。作者指出,Infobright作为一个专用存储引擎,能无缝融入MySQL生态,其SELECT查询语句与普通MySQL无异。 文章重点剖析了Infobright的核心优势:基于列式存储,它能在百万到亿级数据规模下,将复杂分析查询(如SUM、COUNT、GROUP BY)的速度提升至普通引擎的5到60倍,同时实现高达18:1的数据压缩比,能高效处理TB级数据。这些特性使其无需预建索引或分区,非常适合大规模数据分析场景。 当然,作者也坦诚说明了它的限制:社区版仅支持通过LOAD DATA INFILE批量导入数据,不支持常规的INSERT/UPDATE/DELETE操作,且并发查询能力有限(约10余个连接)。因此,它更适用于数据批量加载后进行只读分析的场景,而非需要实时更新的在线事务系统。

本机暂存
IT 2010-04-27 13:45:34 / 累计浏览 5,780

通过Nginx使全站页面变灰,哀悼玉树地震遇难者

这篇讲的是如何利用Nginx在服务器端快速实现全站页面变灰,以响应玉树地震后的全国哀悼日需求。作者从“如何让已上线的网站快速、全局地变为黑白”这一现实问题出发,指出了在前端逐个修改CSS或图片的常规思路在实施效率和全局性上的局限。 文章的核心方案聚焦于Nginx本身,提出了一个巧妙的服务器端解决方案:借助Nginx的 `image_filter` 模块,在服务端处理响应内容。具体做法是,当用户请求网页时,Nginx会拦截响应,并尝试将页面中的所有图片(包括背景图)在返回给浏览器前,通过指令将其旋转角度设为0,结合模块的色彩处理能力,在服务端就将其转化为灰度图像。对于不直接是图片的响应,则通过添加一层CSS滤镜来实现。 这种方案最大的优点是高效与非侵入性:只需在Nginx服务器配置中添加几行规则,即可让整个网站在无需前端修改代码的情况下瞬间“变灰”,响应速度极快且性能开销可控。文章不仅给出了具体的配置片段,还分析了该方案适用的场景与注意事项,对于面临类似紧急需求的技术团队来说,提供了一个非常务实且可快速落地的思路。

本机暂存
IT 2009-11-30 16:21:57 / 累计浏览 7,480

Bo-Blog 2.1.1 的 Nginx Rewrite 规则[原创]

这篇讲的是为一款叫 Bo-Blog 的 PHP 博客程序配置 Nginx 的重写规则。 作者是 Bo-Blog 的使用者,他认为这款博客程序在排版和易用性上比 WordPress 更顺手,但扩展性有所不及。一个常见的问题是,Bo-Blog 官方只提供了 Apache 服务器的 Rewrite 规则,对于使用 Nginx 的用户来说缺少了关键配置。这导致在 Nginx 环境下,博客的 URL 美化功能可能无法正常工作。 文章的核心价值在于,作者亲自完成了规则转换,并提供了 Bo-Blog 2.1.1 版本对应的完整 Nginx 重写配置。这份现成的代码片段可以直接解决问题,省去了其他用户摸索和调试的时间。对于同样使用 Nginx 托管 Bo-Blog 的站长来说,这是一份实用且节省时间的参考资料。

本机暂存
IT 2009-11-10 22:58:50 / 累计浏览 5,300

利用开源的Gearman框架构建分布式图片处理平台[原创]

这篇分享来自2009年金山逍遥技术团队的内部交流,聚焦于他们如何使用开源的Gearman框架,从零构建起名为DIPS的分布式图片处理平台。 文章的核心是解决一个具体的生产问题:如何应对日益增长的、高并发的图片处理请求,实现任务的高效分发与并行处理。作者团队选择了轻量级的分布式任务队列框架Gearman作为技术基座,详细介绍了从架构设计到落地实施的完整过程,包括如何利用Gearman的Worker机制将计算任务分发到多个节点,从而水平扩展图片处理能力。 文中通过一系列PPT清晰地展示了DIPS的整体架构与工作流,体现了如何借助开源工具快速搭建出稳定、可扩展的后台服务系统。对于关注分布式计算早期实践,或需要构建类似异步任务处理系统的开发者而言,这篇回顾提供了具体的架构思路与落地经验。

本机暂存
IT 2009-11-05 23:13:56 / 累计浏览 3,660

实例:Linux EXT3文件系统下成功恢复误删的文件

这篇讲的是在CentOS 5.3系统上,一个使用EXT3文件系统的数据分区发生了文件误删事件。作者没有停留在理论,而是直接分享了从发现问题到成功恢复的完整实战过程。 核心方法是利用EXT3文件系统的日志特性,通过专门工具直接读取文件系统日志来定位被删除文件的数据块。文章没有停留在“可以恢复”的结论上,而是详细记录了具体的命令行操作步骤、所使用的工具参数,以及恢复过程中可能遇到的文件名丢失或内容不完整等问题。 值得注意的是,作者明确指出了这种基于日志恢复方法的局限性:它高度依赖于日志尚未被新操作覆盖的时间窗口。文章最终给出了清晰的结论——在误删后立即停止对该分区的任何写入操作,并迅速启动恢复流程,是提高成功率的关键。整个案例从问题到解决,步骤扎实,为遇到类似问题的读者提供了一份可按图索骥的操作参考。

本机暂存
IT 2009-11-05 23:07:46 / 累计浏览 3,380

稳定的NTP时间同步服务器集群:ntp.api.bz[原创]

这篇讲的是一个提供稳定NTP服务的公开时间服务器集群ntp.api.bz。作者开篇就点出了核心需求:在网络世界里,不同设备维持精确且统一的时间至关重要。NTP协议正是为解决这一问题而生,它能估算网络延迟和时钟偏差,实现毫秒级的校时精度。 文章的核心是介绍这个名为ntp.api.bz的原创服务器集群方案。它并非泛泛而谈NTP原理,而是聚焦于如何构建一个可靠的时间服务基础设施。作者指出,在常规环境下,NTP能提供1-50ms的同步精度,而这套集群方案的目标就是将这种精度和可用性稳定地交付给广大用户。 对于开发者和运维人员来说,一个可靠的时间源是日志分析、分布式系统协调、安全协议运行等场景的基石。这篇文章的价值在于,它没有停留在理论,而是直接提供了一个现成的、可直接使用的公共服务地址,并解释了其背后的协议依据,让读者能快速将其应用到实际环境中解决时间同步问题。

本机暂存
IT 2009-11-05 23:03:40 / 累计浏览 2,960

Linux C/C++ 内存泄漏检测工具:Valgrind

这篇讲的是 Linux 下一款强大的内存调试工具 Valgrind。文章系统地介绍了它如何帮助开发者揪出 C/C++ 程序中的内存管理错误,特别是棘手的内存泄漏问题。 Valgrind 的核心工具 Memcheck 能检测多种常见问题,包括使用未初始化内存、读写已释放内存、越界访问,以及最关键的内存泄漏——即 malloc 或 new 分配的内存没有被对应的 free 或 delete 释放。文章不仅解释了这些原理,还提供了从编译安装到实际使用的完整路径。 最实用的是两个对比示例。对标准的“ls”命令检测后,结果显示 “definitely lost: 0 bytes”,表明没有内存泄漏。而对一个用 libevent 编写的“httptest”程序检测,则明确指出了 “definitely lost: 255 bytes in 5 blocks”,并给出了泄漏发生的具体代码行(evhttp_decode_uri 函数)。作者根据这个定位,添加了缺失的 free() 语句,问题便迎刃而解。 整个过程清晰地展示了 Valgrind 如何像一位精准的“内存侦探”,将模糊的泄漏问题转化为可定位、可修复的具体信息,是 C/C++ 开发者排查后台服务内存问题的一把利器。

本机暂存
IT 2009-11-05 23:02:15 / 累计浏览 2,520

从“军事战争”总结了一些服务器架构思考

这篇讲的是作者从“服务器端应对客户端访问”的战争类比出发,总结了四条实战架构思考。他认为,初期如同小股部队接战,但随着流量激增,必须讲究“排兵布阵”,于是演化出负载均衡、Web、缓存、数据库等多兵种协同的复杂架构。 核心观点包括四方面:优先“收编”成熟开源软件,若其性能或扩展性不足再自研“队伍”;在多线作战时要善于利用“雇佣军”,将非核心服务(如CDN、智能DNS)外包以聚焦主营业务;需要打造“高技术兵器”,例如作者正开发一款针对高并发实时列表页的数据库,以突破传统缓存与MySQL的性能瓶颈;最后是“精简军队”,在保障容错的前提下,用高配置服务器替代低配集群,以降低复杂度与维护成本。 作者预测,随着硬件性能提升,未来架构可能不再按服务类型划分,而是按“CPU密集”、“内存密集”、“存储密集”来组织集群,这与Google工程师提出的“数据中心即一台计算机”的构想不谋而合。

本机暂存