由cron不工作触发的PHP垃圾回收

由cron不工作触发的PHP垃圾回收,php,session,cron,garbage-collection,Php,Session,Cron,Garbage Collection,我正试图使用session_gc()设置一个cron触发的垃圾收集,因为似乎没有垃圾被收集 cron运行一个包含以下内容的php文件: session_start(); $result = session_gc(); session_destroy(); …并将结果写入日志。结果总是0。但是,如果我只是从浏览器中手动运行php文件,则会产生一个很大的数字(表示收集的数量) 我知道cron作业正在工作,php脚本正在运行,因为它正在写入日志。为什么通过cron作业触发时垃圾收集不工作,而手动触发

我正试图使用session_gc()设置一个cron触发的垃圾收集,因为似乎没有垃圾被收集

cron运行一个包含以下内容的php文件:

session_start();
$result = session_gc();
session_destroy();
…并将结果写入日志。结果总是0。但是,如果我只是从浏览器中手动运行php文件,则会产生一个很大的数字(表示收集的数量)

我知道cron作业正在工作,php脚本正在运行,因为它正在写入日志。为什么通过cron作业触发时垃圾收集不工作,而手动触发时垃圾收集工作

我读到脚本“应该由web服务器进程的用户执行”。。。我如何确定这一点?我尝试将php文件的所有权更改为与运行会话的网站的文件夹相同。脚本权限设置为664

我用它来触发php脚本,但我知道它也在工作


感谢您的帮助。

您是在CLI中运行cron作业还是以web脚本的形式运行cron作业?无法通过CLI执行任何操作。cronz调度程序由一个cron作业触发,然后该作业使用上面显示的内容调用PHP脚本。这就是每次结果为0的原因。如果我只是在浏览器中输入PHP url来触发相同的PHP脚本,它将返回一个肯定的结果。顺便说一句,我也尝试过使用由cron作业触发的shell脚本,但也不起作用。听起来可能有点奇怪,但您能否尝试让cron作业使用curl(或类似)作为网页访问此脚本。我想您可能正在查找set*位:。一旦生成文件,更改文件所有权本身不会影响进程的有效uid/gid。@parttimeturtle,我认为更改设置位对php文件不起作用。我试过了,后来它以红色突出显示(当通过SSH列出文件时)。我让cron运行,但它仍然不起作用。读起来,它似乎只适用于bin文件等。无论如何,我确实尝试过将chmod从664更改为775,甚至是777,但这也不起作用。我还尝试了我的系统上可能的所有文件所有权组合,从root:root到nginx和我的组。似乎没什么不同。