经常遇到这样一种情况,计划任务定时后台执行某个php程序,有时候也需要手动执行,可能多个人都需要执行这个程序,如果任务持续时间非常长,就很容易造成重复执行,所以就开发了下面的类。
作用:在实际代码运行前检查与当前相同操作的进程是否正在运行,高并发运行是可靠的,运行中的进程中途异常中断不会产生任何影响。
构造方法传递pid文件目录的绝对路径,需要自己保证不同进程对应不同pid文件。
<?php
/*
* 同一个PHP进程只运行一次,根据进程名字判断是否为排重进程,只能运行于linux,高并发条件下是并发安全的。
*/
对于前端开发者来说移动端存在更多的挑战,移动端页面开发过程中会碰到各种各样千奇百怪的问题(我们俗称BUG或坑),那么今天我为大家分享移动端页面开发过程中的一些坑和排坑技巧。
移动端页面在不同设备、不同操作系统 、不同运行环境下都可能造成各种各样的没有碰到过的的坑,相比曾经的IE6坑多了。下面先介绍一下4类具体常见的坑:
1、外观
A、页面高度渲染错误
把手机OTA升级到Android 5.0(Android L)以后安装某打车软件失败,尝试了几次结果一样。
最开始想到是软件和5.0的适配兼容问题,查下Log吧。
首先通过adb logcat
监测log,然后重新尝试安装,没有发现特别醒目的信息。
然后通过adb install xxx.apk
的方式安装,得到以下错误提示:
由于微信的种种封闭,导致在微信内置浏览器打开的页面,会把外部链接全部屏蔽掉.
所以通用的做法是,判断是微信浏览器打开的时候做一种处理方式.
非微信浏览器打开时做另外一种处理方式.
类似你想在微信打开页面里点击下载按钮,一定是不成功的.我们会友好的跳出一张引导图.
php curl使用privoxy代理访问https://www.google.com/search?q=xxx
curl配置平淡无奇,长时间运行发现一个严重问题,内存泄露!不论用单线程和多线程都无法避免!是curl访问https站点的时候有bug!
内存泄露可以通过linux的top命令发现,使用php函数memory_get_usage()不会发现。
经过反复调试找到解决办法,curl配置添加如下几项解决问题:
[CURLOPT_HTTPPROXYTUNNEL] = true;
今天和大家分享的是 html5 页面下拉到最底部时实现自动刷新加载新数据.
当然,也不一定是html5下适用,web页面都适用.
首先要清楚3个定义:
文档高度
这是整个页面的高度
可视窗口高度
这是你看到的浏览器可视屏幕高度
set_error_handler()不能捕获致命错误(具体错误类型见手册)。
所以需要如下方法:
<?php
ini_set ( 'max_execution_time', 1 );
function shutdown() {
$a = error_get_last ();
print_r ( $a );
}
单例模式主要使用于数据库的连接, 确保数据库一个类只有一个实例, 并且向整个系统提供这个实例。从而避免new操作消耗资源, 同时避免数据库出现too many connection信息.
要点有三个: 1. 必须只有一个实例。 2. 必须自动创建这个实例。 3. 必须向整个系统提供这个实例。
<?
class mysql{
privete static $instance ;//保存实例
//构造函数声明为private, 防止直接创建对象
今天把以前的一个项目导入到工程中,调试一翻很满意之后,运行,发现报错,报错信息如下
01-16 09:45:32.870: E/AndroidRuntime(17685): java.lang.RuntimeException:
Unable to start activity ComponentInfo{com.bxlt.android.aims.activity/com.bxlt.android.aims.activity.LoginActivity}:
java.lang.SecurityException: Not allowed to start service Intent { act=InformationService }
without permission not exported from uid 10154
基本满足所有配置相关的需求。
/**
* 解析.ini格式的配置文件为一个树形结构的对象
* 配置文件不同section通过冒号继承
* 默认根据hostname确定使用的section,如果不能确定就优先使用production
* 检测环境的时候总是优先检测production,其余section按定义顺序检测
*