启用SuiteCRM工作流:SuiteCRM使用了许多工作流程可以在预定时间运行的程序,支持搜索索引,工作流,电子邮件通知,数据库维护等功能。完成安装Suite CRM后,需要手动启用 Scheduler作业。这是通过要求操作系统每分钟运行一个名为cron.php的脚本来完成的。反过来,这将根据其适当的时间表管理所有SuiteCRM作业。所有这些都可以在Admin / Schedulers屏幕上进行管理。

自定义CRM软件

在Windows中,这是在系统的“任务计划程序”上设置的;在Linux和iOS(这是本文的重点)中,它是在crontab中设置的。在安装过程中,您将收到详细的说明,以及设置这些作业所需运行的特定命令。安装后,您仍然可以在Admin / Schedulers屏幕底部访问这些说明。

为确保您的Scheduler作业不会造成权限问题,标准做法是在Web服务器所运行的同一用户下运行它们。对于不同的配置,必须调整config.php中的allowed_cron_users数组。

我需要了解什么crontab基础知识?

在Linux中,每个用户可以有一个crontab。这甚至适用于无法登录Shell的用户,例如许多默认安装中的标准Web服务器用户(如www-data和nobody)。在这些示例中,我将一直使用www-data,但是您可以将其更改为所需的任何用户。

要列出特定用户的crontab的内容,请使用类似以下命令的内容:

sudo crontab -l -u www-data

要编辑这些内容,请改用-e开关:

sudo crontab -e -u www-data

某些Linux版本(尤其是Ubuntu)具有另一个crontab,即系统级crontab。这是通过编辑文件来编辑的:

sudo nano /etc/crontab

请注意,此crontab中的注释说明它是系统范围的crontab。在这里,您可以指定要以任何用户身份运行的命令,因此,在其中有一个额外的列,您可以在其中说出该命令运行的用户,例如:

* * * * * www-data cd /var/www/html; php -f cron.php > /dev/null 2>&1

看到www-data那里吗?特定用户的crontab中不会包含该内容。该用户名列仅用于系统范围的crontab。

这些作业应在哪个用户下运行?

答案因系统而异。但是,一种标准的可接受解决方案是找出您的Web服务器在哪个用户下运行,并将该用户也用于cron作业。这简化了权限方案的设计,并基本上确保了访问同一数据库和文件的两个进程(Web应用程序和cron作业)不会彼此产生权限问题。

弄错了会严重影响您的安装。确保您的权限方案是这样的:一个进程可以写和写可写,另一个进程也可以读和写。

如果由于错误的crontab配置而以root身份运行cron作业一段时间,则在修复它后,请记住在整个SuiteCRM目录树上重置正确的所有权和权限,然后执行Quick Repair and Rebuild。

以及如何确定我的Web服务器在哪个用户下运行?

您可以通过多种方法在线阅读有关内容。我将列出一些特定于SuiteCRM的信息:

在7.8.3及更高版本中,进入Admin / Schedulers并在屏幕底部看到crontab命令。

在7.8.3及更高版本中,请检查cron_allowed_usersconfig.php文件中的该部分,该部分应该在该位置。

在任何版本上,进入Admin / Diagnostics并仅选择phpinfo。生成该文件后,检查APACHE_RUN_USER其提供的值。(注意:不要从命令行运行php -i,这不是一回事)

config.php中的cron_allowed_users部分是什么?

本节中的信息仅适用于SuiteCRM 7.8.3和更高版本。

从2017年4月的SuiteCRM 7.8.3开始,引入了一种机制来限制允许运行cron作业的用户。早期版本不检查用户,而是让您以任何用户身份运行cron(因此,您需要确保它是正确的用户,而不是root)。

只有在被称为数组中列出用户cron_allowed_users在config.php(你的SuiteCRM安装的根目录)将被允许运行cron.php。任何其他用户将导致该脚本在每次启动时自行终止。

通常,您无需执行任何操作即可将有效用户添加到该阵列,因为SuiteCRM安装程序会自动为您执行此操作,并添加当前的Web服务器用户(如果尚未存在)。升级向导将执行相同的操作(这些自动添加的缺点是,如果您想使Web服务器用户脱离该阵列,则每次升级都将花费一些工作。但是,这种情况很少见)。

您可以添加多个允许的用户。root尤其不建议这样做,并且root即使运行运行安装程序的Web服务器用户也不会添加安装程序,如果确实需要,则必须手动进行添加。

config.php的相关部分可能如下所示:

'cron' =>

array (

'max_cron_jobs' => 10,

'max_cron_runtime' => 30,

'min_cron_interval' => 30,

'allowed_cron_users' =>

array (

0 => 'www-data',

),

),

我应该在crontab中使用哪个命令?

基本思想是经常运行cron.php,它会处理所有事情。

使用上面给出的有关如何编辑正确的crontab以及应该是哪个用户的crontab的知识,将此命令添加到crontab的底部(以一般形式给出):

* * * * * cd /your/suitecrm/folder; php -f cron.php > /dev/null 2>&1

现在给出一些具体的典型示例。首先,Ubuntu Server,系统级crontab:

* * * * * www-data cd /var/www/html; php -f cron.php > /dev/null 2>&1

如果要编辑特定www-data用户crontab,请在该命令中省略用户名。

Bitnami提供的一种非常常见的安装。他们建议使用以下命令:

* * * * * su daemon -s /bin/sh -c "cd /opt/bitnami/apps/suitecrm/htdocs; /opt/bitnami/php/bin/php -f cron.php > /dev/null 2>&1"

当然,您也可以使用crontab的语法来降低其运行频率,这在频繁使用的系统中可能很重要。要每两分钟而不是每分钟运行一次,请更改第一列,如下所示:

*/2 * * * * cd /your/suitecrm/folder; php -f cron.php > /dev/null 2>&1

如果我无法编辑crontab怎么办?

如果您没有sudo权限来编辑某些crontab(在共享主机方案中可能会发生),请与您的虚拟主机技术支持联系以请求更改。您可以在此处将其引导至这些说明。

哪些php.ini设置适用于cron作业?

首先,回想一下,系统中通常至少有两个独立的PHP配置:一个在Web服务器内部运行,一个从命令行(CLI)运行。

Cron作业通常从CLI子系统运行,该子系统使用另一个php.ini文件。这意味着您必须timezone专门为cron作业配置诸如此类的内容以及其他详细信息。

要在系统中找到几个php.ini文件,可以使用

sudo find / -name php.ini 2>/dev/null

要查看您的CLI使用哪个php.ini文件,请键入

php -i | grep php.ini

如何确定作业确实在运行?

该Admin / Schedulers会显示每个作业的最新运行时间,以及它是否有错误。

Linux的syslog正常日志记录在中启动的进程cron。

suitecrm.log只要您的日志级别覆盖了它,SuiteCRM 还将记录这些事件(您可以对其进行检查并从中进行更改Admin / System Settings)。

如果某些特定的Scheduler Job因错误而失败,suitecrm.log也是开始进行故障排除的地方,以及Web服务器的日志(通常称为php_errors.log)。

下面是重点

在管理员——系统管理——任务计划中,会有如下的提醒。

配置运行 SuiteCRM 的任务计划程序,需要使用此命令编辑 Web 服务器用户的 crontab 文件:

sudo crontab -e -u web2

并在用户 crontab 文件中添加以下行(可以指定 -c /path/to/php.ini 参数使用自定义的 php.ini 配置文件,适用于 php fastcgi 用户):

* * * * * cd /var/www/clients/client1/web2/web; php -f cron.php > /dev/null 2>&1

看完之后您应该明白,你还有什么配置没有做。

首先我们登陆到Linux服务器,运行上面提示的第一行命令:sudo crontab -e -u web2

运行完成后,提示:“no crontab for web2-using an empty one”,大致就是说针对web2这个虚拟空间没有crontab,需要我们创建一个,然后有提示我们选择哪个编辑器创建。

我们选择推荐的第二个编辑器“nano”,回车。自动成功创建了一个 crontab ,并且使用“nano”编辑器给我们打开了crontab配置文件,我们需要在文件中插入“*    *    *    *    *     cd /var/www/clients/client1/web2/web; php -f cron.php > /dev/null 2>&1”(在ubuntu 16中运行不生效)

备注:如上图所示,需要执行完“Ctrl+o”保存后,按回车键存储!!!存储完成后“Ctrl+X”推出。

然后保存,退出即可。退出后,进入如下命令行。此时工作流即可生效!!!

GNU nano使用保存退出的说明

文件编辑中常用快捷键:

ctrl+X 离开nano软件;

ctrl+O 保存文件 。

复制一整行:Alt+6

剪贴一整行:Ctrl+K

粘贴:Ctrl+U

参考官方论坛链接:https://community.suitecrm.com/t/workflow-not-working-suitecrm-installed-on-centos-6-3-64bit/45019/37

root@isp:~# sudo crontab -e -u web2

no crontab for web2 - using an empty one

Select an editor. To change later, run 'select-editor'.

1. /bin/ed

2. /bin/nano

3. /usr/bin/vim.basic

4. /usr/bin/vim.nox

5. /usr/bin/vim.tiny

Choose 1-5 [2]: 2

crontab: installing new crontab

root@isp:~#

推荐阅读

php工作流根据不同流程保存,启用SuiteCRM工作流(workflow)-权威指南相关推荐

  1. 驰骋工作流引擎的流程属性-节点属性-前台操作

    1:    工作流引擎功能-流程属性 •    支持客户参与流程:比如在一个erp系统里供应商相对企业来说是外部用户,在一个学校系统里,教师是内部用户,学生是外部用户.ccflow支持外部用户登录参与 ...

  2. java工作流引擎Jflow流程事件和流程节点事件设置

    流程实例的引入和设置 关键词: 开源工作流引擎  Java工作流开发  .net开源工作流引擎   流程事件 工作流节点事件 应用场景: 在一些复杂的业务逻辑流程中需要在某个节点或者是流程结束后做一些 ...

  3. Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解...

    实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和 ...

  4. TDOA_工作流名称、流程表单办理等页面生僻字无法显示

    TDOA_工作流名称.流程表单办理等页面生僻字无法显示 问题背景描述 PC端OA系统的工作流名称.工作流程办理页面的生僻字无法显示,但能存入到数据库中.例璟.赟等. 解决办法: 找到如下路径:D:/M ...

  5. Java状态模式实现工作流_关于使用“状态模式”做工作流概要。

    usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceWF {//工程名称:通过工作流状态进行工作流管理///Au ...

  6. 工作流系统之二十五 .net工作流系统开发体会

    .net工作流系统开发体会 公司的eworkflow自定义工作流系统,最初是开发了java版的.待java版的功能稳定后,就开始开发.net版的. java版的eworkflow工作流系统,我们没有依 ...

  7. 工作流系统开发之二十三 图解工作流的基本路由方式

    上一篇主要说明 dotnet工作流引擎的基本原理和引擎的基本元素. 这篇主要以图解的方式说明工作流引擎的运转模型,路由方式. 一个业务流程包含一序列的处理过程,以及他们的相互顺序关系,还包括过程的启动 ...

  8. 《Cortex-M0权威指南》之体系结构---程序映像和启动流程

    <Cortex-M0权威指南>之体系结构---程序映像和启动流程 转载请注明来源:cuixiaolei的技术博客 我们先来看看程序映像. 通常,Cortex-M0处理器的程序映像时从地址0 ...

  9. java工作流引擎,roadflow(一个强大的工作流引擎)

    JAVA工作流引擎(J-RoadFlow) J-RoadFlow工作流平台是知名的.NET工作流引擎RoadFlow的JAVA移植版.该工作流平台由从事多年OA和工作流实施及开发的团队研发, 采用最简 ...

  10. 【视频】互联网公司面试流程 注意事项 加分点 防骗指南

    [春招]互联网公司面试流程 注意事项 加分点 防骗指南 我是敖丙,一个在互联网苟且偷生的工具人. 最好的关系是互相成就,各位的 「三连」 就是丙丙创作的最大动力,我们下期见! 文章持续更新,可以微信搜 ...

最新文章

  1. get post请求区别_LoadRunner发送GET和POST请求
  2. 转:WinForm程序中两份mdf文件问题的解决方法
  3. 8种你可能正在写错的SQL用法
  4. IDEA常用快捷键【win-mac对比】
  5. mysql免安装出现1067_mysql,免安装,1067错误
  6. linux录制声卡声音_不是你唱歌难听,选对麦克风和声卡了吗?
  7. java线程池ThreadPoolExecutor使用简介
  8. web前端面试题(关于闭包)
  9. 总结下几个有漏洞第三方插件
  10. 服务器版博客系统、前后端交互1
  11. 32位16进制转换为10进制数
  12. c#中屏蔽窗体关闭的消息
  13. a4如何打印双面小册子_用word如何打印小册子(一张A4打两张那种的)
  14. Python 讲堂 parse_args()详解
  15. 轻量级网络模型MobileNet发展脉络(V1-V2-V3)
  16. 有赞下拉菜单html,python selenium自动上传有赞单号的操作方法
  17. 《分析服务从入门到精通读书笔记》第一章、数据分析基础(1)
  18. VB6如何引用VBDX9.tlb-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(2)
  19. Java大数据-Hadoop-HDFS客户端操作文件更名和移动
  20. ECShop V2.7.3 补丁包集合 请直接去ECSHOP官方网站下载

热门文章

  1. Cross Compile libdnet and Python for Montavista/PowerPC
  2. 中国地图全图 中国卫星地图 谷歌地图高清卫星地图
  3. 信号与系统matlab实践实验二,信号与系统matlab实验课后习题答案
  4. matlab模糊聚类分析画树状图,Matlab笔记模糊聚类分析原理及实现
  5. Python糗百爬虫(精简版)
  6. Java中常见的服务器
  7. AI如何在医疗中大显身手?
  8. fortran程序设计2011年注册电气工程师基础考试大纲3
  9. python 办公自动化 视频教程_Python自学爬虫/办公自动化视频教程
  10. 初中计算机课件flash,初中数学flash课件(共100个)