我的网站上有一个cron作业,它经常运行,下载文本文件的内容。一切正常,直到今天早上我从我的网络主机收到一封电子邮件,我用完了所有(已分配)的流程。他们把它缩小到这个文件并告诉我修正它的状态,因为它没有正确关闭。对这个php新手的任何帮助都是最受欢迎的。
#!/usr/bin/php
<?php
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "http://www.address.com/textfile.txt");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//$output contains the output string
$output = curl_exec($ch);
// We need to check whether the data is valid.
// We check for the 'Client Error' string
// inside the output data. If it exists, we don't want
// to overwrite the previous (good) data.
if (strpos($output,'Client Error') !== false) {
echo $output;
//echo 'Client Error, no data.';
}else{
$outputFile = '/home/hostingacct/public_html/outputTextFile.txt';
$fh = fopen($outputFile,'w') or die("can't open");
fwrite($fh,$output);
fclose($fh);
}
// close curl resource to free up system resources
curl_close($ch);
?>
编辑:
添加了ps xauf结果 - vds-status.php是我正在使用的php文件。
ryan 11678 0.0 0.0 335380 6216 ? Ss Dec14 0:13 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 11663 0.0 0.0 335640 6100 ? Ss Dec12 0:19 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 11509 0.0 0.0 335380 6220 ? Ss Dec14 0:13 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 11244 0.0 0.0 335640 6128 ? Ss Dec13 0:16 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 11173 0.0 0.0 335640 6264 ? Ss Dec14 0:14 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 10718 0.0 0.0 335380 6004 ? Ss Dec12 0:20 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 9397 0.0 0.0 335380 6020 ? Ss Dec13 0:16 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 9379 0.0 0.0 335380 6216 ? Ss Dec13 0:14 /usr/local/bin/php /home/ryan/etc/vds-status.php
ryan 9333 0.0 0.0 335640 6128 ? Ss Dec13 0:16 /usr/local/bin/php /home/ryan/etc/vds-status.php
当我之前发布我的问题时,我让我的webhost立即删除了所有进程,因为它阻止了我的网站。问题再次发生在2个月之后,进程仍在运行,等等。我按照Antoan运行ps xauf,结果在上面。
看起来这个问题在12日开始并且持续了两天。任何人都可以了解这可能发生的原因吗?这似乎发生在这些问题日午夜之后。这可能是因为服务器(通过cURL)无法访问 - 使用php脚本无法退出?谢谢大家。
答案 0 :(得分:1)
这很可能是错误的假设 你有ssh访问这个主机?
如果是,请执行ps xuaf
并查看哪些进程是真实的。
如果您在此处发布列表,我们将能够为您提供更多帮助。
看起来像某种沟通问题。你能加点那些:
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); // Setting the amount of time (in seconds) before the request times out
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Setting the maximum amount of time for cURL to execute queries
根据需要调整时间。