2017-06-22 12 views
1

私はTwitterとFacebookの特定のページから新しい投稿を送る電報のボットを持っています。定期的なメッセージの送信のための電報ボット

私はそれをこのように行った:

function checkTwitterPost($post, $author) { 
    $tw_last_post = strtotime($post['created_at']); 
    $twitter_last_update_path = './timestamps/'.$author.'_twitter_last_update.txt'; 
    if (file_exists($twitter_last_update_path)) { 
     $tw_last_update = (int)file_get_contents($twitter_last_update_path); 
    } else { 
     $tw_last_update = 0; 
    } 
    file_put_contents($twitter_last_update_path, $tw_last_post); 
    if ($tw_last_post > $tw_last_update) { 
     unset($tw_last_update); 
     return true; 
    } 
    unset($tw_last_update); 
    return false; 
} 

function checkFacebookPost($post, $author) { 
    $fb_last_post = strtotime($post->created_time); 
    $facebook_last_update_path = './timestamps/'.$author.'_facebook_last_update.txt'; 
    if (file_exists($facebook_last_update_path)) { 
     $fb_last_update = (int)file_get_contents($facebook_last_update_path); 
    } else { 
     $fb_last_update = 0; 
    } 
    file_put_contents($facebook_last_update_path, $fb_last_post); 
    if ($fb_last_post > $fb_last_update) { 
     unset($fb_last_update); 
     return true; 
    } 
    unset($fb_last_update); 
    return false; 
} 



$bot->command('start', function ($message) use ($bot) { 
    @unlink('./timestamps/user1_facebooke_last_update.txt'); 
    @unlink('./timestamps/user1_twitter_last_update.txt'); 
    @unlink('./timestamps/user2_facebooke_last_update.txt'); 
    @unlink('./timestamps/user2_twitter_last_update.txt'); 


    $users = array(
     'user1'  => ['facebook'=>'user1', 'twitter'=>'user1'], 
     'user2'  => ['facebook'=>'user2', 'twitter'=>'user2'], 
    ); 
    while (true) { 

     $account = $users['user1']['facebook']; 
     $post = FacebookUtil::getLastPost($account); 
     if (checkFacebookPost($post, $account)) { 
      $bot->sendMessage($message->getChat()->getId(), $post->message); 
     } 
     unset($post); 

     $account = $users[user1]['twitter']; 
     $post = TwitterUtil::getLastPost($account); 
     if (checkTwitterPost($post, $account)) { 
      $bot->sendMessage($message->getChat()->getId(), $post->message); 
     } 
     unset($post); 

     $account = $users['user2']['facebook']; 
     $post = FacebookUtil::getLastPost($account); 
     if (checkFacebookPost($post, $account)) { 
      $bot->sendMessage($message->getChat()->getId(), $post->message); 
     } 
     unset($post); 

     $account = $users['user2']['twitter']; 
     $post = TwitterUtil::getLastPost($account); 
     if (checkTwitterPost($post, $account)) { 
      $bot->sendMessage($message->getChat()->getId(), $post['text']); 
     } 
     unset($post); 

     sleep(1500); 
    } 
}); 

それは作品だが、メモリの問題が発生します。しばらくすると、サーバーが停止します。

さらに適切なソリューションはありますか?

このアプローチをどうにかして最適化できますか?

答えて

0

Cronを使用して問題を解決し、ファイルにチャットIDを格納する。

関連する問題