使用新浪微薄API发送微薄信息遇到的问题

需要通过新浪微薄的API发送微薄信息

问题一:字数计算

微薄要求140个字,如果直接用mb_strlen , strlen  并不能解决问题

于是自己写了一个函数

1
2
3
4
5
6
7
8
9
10
11
12
13
    function countP($str){
        $length=0;
        $strLen=0;
        $peiha="/[a-zA-Z0-9 \,\\\.\/\<\>\?\:\'\"\{\}\-\_\+\=\~\`\!\@\#\$\%\^\&\*]*\r\n\t/";
        preg_match_all($peiha,$str,$match);
        for($i=0;$i<count($match[0]);$i++){
            $length+=strlen($match[0][$i]);//所有半角状态下字母,标点符号长度
        }
        $str1=preg_replace($peiha,"",$str);//去所有半角状态下字母,与标点符号长度
        $strLen=strlen($str1);
        $length+=$strLen/3*2;
        return $length;
    }

问题二:重复发送内容,设计的是利用网站被访问的时候 ,如果满足发送条件 则 触发微薄发送

访问量很小的情况下,没有问题,但流量一大就会出现一条内容重复发送多次的情况。

最初想的方法是用TP的F函数 在微薄发送前 加一个锁,然后发送结束解锁,也没有做太多的考虑  于是就出现了上面的情况

最后解决方法,使用 flock 函数

1
2
3
4
5
6
7
8
9
$handle = fopen("/path/wbsendlock",'a');
$canwrite= flock($handle,LOCK_EX);
if($canwrite)
 
{
   //具体业务代码
}
flock($handle,LOCK_UN);
fclose($handle);

未经允许不得转载:开心乐窝-乐在其中 » 使用新浪微薄API发送微薄信息遇到的问题

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏