我在Facebook上自动发布我的博客文章时遇到了问题。我一直在网上寻找解决方案,但似乎我是唯一一个面对这个问题的人。
以下是所有信息:
随着Twitter发布我的文章和Facebook,一切正常。我的数据库保存了isOnline = true。
使用OVH我每小时只能运行CRON任务。 CRON任务完美地完成了工作,每篇文章只在社交网络上发布了1篇帖子。我的CRON正在调用一个文件,该文件使用curl打开处理发布的控制器页面。
但是为了有更好的反应时间,我尝试在Symfony中添加一个事件,以便每次加载页面时,它都会检查是否有要在社交网络上发布的文章。这很好,除了我在Twitter上发布了2篇文章,在Facebook上发表了大约20-30篇...我已经尝试过各种各样的东西:kernel.response,kernel.controller,kernel.request,我做了一个“返回”。如果事件不是MASTER_REQUEST。没有成功。
然后我决定使用twig来调用我的CRON任务打开的控制器。我在base.html.twig的底部添加了一个“{{render(controller(....))}}”。只有一个帖子,它适用于Twitter。但是在Facebook上,它会在同一个出版物中发送十几次。
我有点失落。现在已经好几天了,我正试图解决这个问题。任何帮助或建议将不胜感激!谢谢:))
我的控制器动作:
$repository = $this->getDoctrine()->getRepository(Article::class);
$articles = $repository->findAllOfflineArticles();
foreach ($articles as $article) {
$content = $article->getSocialContent();
if($content == null){
$content = $article->getTitle();
}
$link = $this->get('router')->generate('article_show', array('slug' => $article->getSlug()), UrlGeneratorInterface::ABSOLUTE_URL);
// Post on social networks
$message = new \MartinGeorgiev\SocialPost\Provider\Message($content, $link);
$this->get('social_post')->publish($message);
//
$article->setIsOnline(true);
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
}
---------------- 编辑1 ----------------
感谢@AhmetGunes睁开眼睛。我一直在寻找代码中的错误,我尝试了很多不同的事情,以至于我对情况的理解变得模糊。似乎问题如下:
public function findAllOfflineArticles(){
return $this
->createQueryBuilder('a')
->where('a.isPublished = :is_published')
->andWhere('a.isValidated = :is_validated')
->andWhere('a.isOnline <= :is_online')
->andWhere('a.publicationDate <= :now')
->setParameter('now', new \Datetime())
->setParameter('is_published', true)
->setParameter('is_validated', true)
->setParameter('is_online', false)
->orderBy('a.publicationDate', 'ASC')
->getQuery()
->getResult()
;
}
问题很明显,尽管我不太明白它是如何以这种方式工作的。 查询正在提取
->andWhere('a.isOnline <= :is_online')我纠正了这个大错:
->andWhere('a.isOnline = :is_online')并在Facebook上只发了一个帖子!
但是,为什么Doctrine没有告诉我我的请求有问题?一旦isOnline设置为true,脚本怎么不再启动?
---------------- 编辑2 ----------------
校正工作正常两次。但现在它像以前一样回归。 Facebook上的28-29个出版物。我明白已经筋疲力尽了。这让我发疯了。