计划在 PHP cURL 中发布到 Twitter

Scheduled posting to twitter in PHP cURL

我目前可以 post 使用 Twitter API 向我的 Twitter 帐户发送推文。我正在使用卷曲。但现在我想 post 按计划 date/time 发布推文。我知道这是可能的,但不知道如何?

代码:

<?php
  $twitter_consumer_key = 'xxx';
  $twitter_consumer_secret = 'xxx';
  $twitter_access_token = 'xxx';
  $twitter_access_token_secret = 'xxx';
  $twitter_version = '1.0';
  $sign_method = 'HMAC-SHA1';
  $status="HelloWorld";
  $url = 'https://api.twitter.com/1.1/statuses/update.json';
  $param_string = 'oauth_consumer_key=' . $this->twitter_consumer_key .
        '&oauth_nonce=' . time() .
        '&oauth_signature_method=' . $this->sign_method .
        '&oauth_timestamp=' . time() .
        '&oauth_token=' . $this->twitter_access_token .
        '&oauth_version=' . $this->twitter_version .
        '&status=' . rawurlencode($status);

  //Generate a signature base string for POST
  $base_string = 'POST&' . rawurlencode($url) . '&' . rawurlencode($param_string);
  $sign_key = rawurlencode($this->twitter_consumer_secret) . '&' . rawurlencode($this->twitter_access_token_secret);

  //Generate a unique signature
  $signature = base64_encode(hash_hmac('sha1', $base_string, $sign_key, true));
  $curl_header = 'OAuth oauth_consumer_key=' . rawurlencode($this->twitter_consumer_key) . ',' .
      'oauth_nonce=' . rawurlencode(time()) . ',' .
      'oauth_signature=' . rawurlencode($signature) . ',' .
      'oauth_signature_method=' . $this->sign_method . ',' .
      'oauth_timestamp=' . rawurlencode(time()) . ',' .
      'oauth_token=' . rawurlencode($this->twitter_access_token) . ',' .         'oauth_version=' . $this->twitter_version;

  $ch = curl_init();
  //Twitter post
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: ' . $curl_header));
  curl_setopt($ch, CURLOPT_VERBOSE, 1);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, 'status=' . rawurlencode($status));

  $twitter_post = json_decode(curl_exec($ch));
  curl_close($ch);
  print_r($twitter_post);
?>

我需要做哪些更改才能post按计划发布推文date/time

您可以使用 cron 作业。

http://www.thesitewizard.com/general/set-cron-job.shtml 求解释。

https://www.setcronjob.com/ 如果您的主机(通常是共享主机)没有 cron 选项,可获得免费服务

尽情享受吧!

以下是您可以执行预定推文的总体情况:

1 - 将 cron 任务设置为每分钟 运行 到名为 post_tweets.php 的页面(例如)

2 - 当用户想要安排推文时,保存推文,包括 date/time 推文应 posted 到数据库中。假设推文应该 post 在 2015-06-11 18:00:00

编辑

3 - 每次你的页面 post_tweets.php 将被你的 cron 调用时,这个页面应该检查你的数据库中是否有一个在执行时早于 post_tweets.php 时间的条目(如果页面在 2015-06-11 18:00:35 或以上被调用,您的页面将看到您在 2015-06-11 18:00:00 设置了一个条目 >> 去吧,你必须 post推文!)

4 - 如果是,post 推文。然后从你的数据库中删除推文

5 - 如果否,则什么也不会发生

此方法需要每分钟 SELECT 查询 运行 以检查是否有需要 post 的内容。

我希望你现在能更好地理解我的逻辑。