mwwdfl 发布的文章

问题描述:用的好好的,突然断了,重启一下MySQL(service mysql restart),问题得到暂时解决,不到半天又崩了。。。
解决方法:(问题不一定一样)我的查看MySQL错误日志(我的在var/log/mysql/error.log)发现有十多张表is marked as crashed and should be repaired(表损坏,需要修复)
首先找到你的数据库文件(在数据库中执行 show variables like '%datadir%';就会显示数据库文件的路径),看看出问题的表在哪个数据库中,然后进入到这个数据库,比如我的:myisamchk -f /var/lib/mysql/we7/*.MYI,即可;
第二种(我的是微擎报的这个错):
进入到命令行界面输入sql:repair table your_table_name USE_FRM;即可修复
修复哪张表就换成哪个表名

//输出的文件类型为excel  
    header("Content-type:application/vnd.ms-excel");  
    //提示下载  
    header("Content-Disposition:attachement;filename=Report_".date("Ymd").".xls");  
  
    //报表数据  
    $ReportArr = array(    array(1,2,3,4,5),  
                        array('A','B','C','D','E'),  
                        array('up','down','left','right','center'),  
                        array('欢','迎','光','临','我','的','百','度','空','间')  
                    );  
    $ReportContent = '';  
    $num1 = count($ReportArr);  
    for($i=0;$i<$num1;$i++){  
        $num2 = count($ReportArr[$i]);  
        for($j=0;$j<$num2;$j++){  
            //ecxel都是一格一格的,用\t将每一行的数据连接起来  
            $ReportContent .= '"'.$ReportArr[$i][$j].'"'."\t";  
        }  
        //最后连接\n 表示换行  
        $ReportContent .= "\n";  
    }  
    //用的utf-8 最后转换一个编码为gb  
    $ReportContent = mb_convert_encoding($ReportContent,"gb2312","utf-8");  
    //输出即提示下载  
    echo $ReportContent;

第二种参考(选自微擎投票:自己参考用的)
//生成excel表格

protected function exportexcel($data=array(),$title=array(),$filename='report'){
    header("Content-type:application/octet-stream");
    header("Accept-Ranges:bytes");
    header("Content-type:application/vnd.ms-excel");  
    header("Content-Disposition:attachment;filename=".$filename.".xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    //导出xls 开始
    if (!empty($title)){
        foreach ($title as $k => $v) {
            $title[$k]=iconv("UTF-8", "GB2312",$v);
        }
        $title= implode("\t", $title);
        echo "$title\n";
    }
    if (!empty($data)){
        foreach($data as $key=>$val){
            foreach ($val as $ck => $cv) {
                $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);
            }
            $data[$key]=implode("\t", $data[$key]);
            
        }
        echo implode("\n",$data);
    }
}

public function doWebCreatemenu_test()

{
    global $_W, $_GPC;
   
    $account = WeAccount::create();
    $actoken = $account->getAccessToken();
    $url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={$actoken}";//exit;
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_POST,1);

// $data = '{
// "button":[
// {
// "type":"click",
// "name":"今日歌曲",
// "key":"V1001_TODAY_MUSIC"
// },
// {
// "name":"菜单",
// "sub_button":[
// {
// "type":"view",
// "name":"搜索",
// "url":"http://www.soso.com/"
// },
// {
// "type":"view",
// "name":"视频",
// "url":"http://v.qq.com/"
// },
// {
// "type":"click",
// "name":"赞一下我们",
// "key":"V1001_GOOD"
// }]
// }]
// }';
// curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
// curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
// curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

    $output = curl_exec($ch);
    if($output == false){
        echo curl_error($ch);
    }else{
        echo $output;
    }
    curl_close($ch);
}

新建的模块都在addons下
所有的模板文件都在你的模块下的template下(不管是手机端还是web端):

1、web端直接放在templatexia
2、手机端的要放在mobile文件夹下(即要新建这个文件夹)
3、还有个image目录(新建),是存放所有的css、js、图片啊(所有单独用到的资源文件都放到这个位置);

在你的模块目录下新建inc

inc下新建俩目录:mobile和web
(site.php 中大量的 doWebXxx, doMobileXxx 方法, 拆分成一个个文件放置到 web 和 mobile 文件夹中)
php文件起名字:你定义的.inc.php

引用了bootstrap的css样式:面板啊、表单啊
全局变量用之前要先定义:global $a,$b;
$_W全局变量(很多参数,可获取当前公众号的id等信息)
$_GPC(相当于$_POST)
src="{php echo tomedia('相对路径')}"//例如存放的相对路径的图片就可以自动识别出完整的路径
如果你的css全局样式或者其他的控件没起效果,那么当前的$_W一定要global,否则没效果
在模板文件下的receive.php里可以记录日志,WeUtility::logging('suibian',$this->message['content']);
在form表单里无论写submit还是button进一步操作都会刷新页面回到公众号管理页面,用a链接就哦了
给版本改名字的时候在site.php的class类里面也要跟着改一下
引入图片的路径可以用$_W['siteroot'],然后后面跟具体路径
带搜索的下拉框的插件在微擎里自带的有,在web/resource/components/select2/select2.min.css,但是和require.js冲突, 这时只需单独引用require.js,然后在需要引入select2.js的HTML文件里

require(['/web/resource/components/select2/select2.min.js'],function(){
                $("#select_can_search").select2();
        });即可,如果是在同一目录,直接写js文件,如果在不同目录,可以从根目录'/'下找;

直接处理的类型是process.php(符合规则列表里的触发字才会走这个文件),订阅的消息类型是receiver.php(用户发送的任何文字都经过此模块,只是不能进行return返回处理,但是可以记录日志),记录日志方法:WeUtility::logging('trace', $postStr);第一个参数是起个名字,第二个参数是要保存的内容比如:WeUtility::logging('debug', $this->message[‘content’]);这样就把用户发送的所有信息都保存起来了

《微擎开发写在process.php里,作为事件推送-》扫描带参数二维码事件-》各个参数带返回值》
$(document).ready(function(){

    $(document).mousemove(function (e) {
        $('#img').css('left',e.pageX + 30+'px');
        $('#img').css('top',e.pageY + 'px');
    });
});//获取当前鼠标位置

//=========================分页=============================================================================
微擎的pagination分页搜索带参数的问题,共5个参数,总数、当前页数、数据、url(一般都为空)、ajax(是否是ajax)、ajaxname;带参数的情况下只能用ajax实现,
$pagination = pagination($total,$page,$rows,'',array('before' => 5, 'after' => 4, 'ajaxcallback' => 'true', 'callbackfuncname' => 'test'));
在HTML端
function test(a,b,c){
//a代表url,b代表鼠标移入的当前页码数,c代表this

    $.ajax({
        url:"{php echo $this->createWebUrl('tongji',array())}",
        data:$('#search').serialize()+'&page='+b,
        type:'POST',
        dataType:'HTML',
        success:function(returndata){
            document.documentElement.innerHTML=returndata;

        },
        error:function(){
            alert('数据返回出错,无伤大雅,请继续');
        }
    });
}

分页2:
js获取当前按钮(上一页、下一页等)的url,然后连上搜索参数即可
//菜单跳转(自定义)
$a = $this->createMobileUrl('enter');

    $a = substr($a,2);
    $b = 'http://' . $_SERVER['HTTP_HOST'] . '/'. $a;