【问题标题】:PHP code brings EC2 down each time it runsPHP 代码每次运行时都会关闭 EC2
【发布时间】:2015-09-18 14:47:04
【问题描述】:

我已经为我的 PHP 代码设置了一个 Cron 作业,使其每 20 分钟运行一次。 但它每次都会杀死 EC2 t2micro 实例。这是服务器日志。 请帮忙。

ip-172-31-42-52 登录:[20332.164336] 内存不足:杀死进程 1241 (java) 得分 174 或牺牲孩子
[20332.192538] 杀死进程 1241 (java) 总-vm:1473180kB, anon-rss:176012kB, file-rss:0kB
[23932.654770] 内存不足:杀死进程 1131 (mysqld) 得分 71 或牺牲孩子
[23932.690310] 终止进程 1131 (mysqld) 总虚拟机:908644kB,匿名 rss:72004kB,文件 rss:0kB
[39839.833448] 内存不足:杀死进程 4616 (mysqld) 得分 68 或牺牲孩子
[39839.845119] 杀死进程 4616 (mysqld) 总虚拟机:908692kB,匿名 rss:68816kB,文件 rss:0kB
[39839.901289] 内存不足:杀死进程 4646 (mysqld) 得分 69 或牺牲孩子
[39839.937446] 杀死进程 4646 (mysqld) 总-vm:908692kB, anon-rss:70392kB, file-rss:0kB
[63862.861894]内存不足:杀死进程6802(mysqld)得分66或牺牲孩子
[63862.875681] 杀死进程 6802 (mysqld) 总虚拟机:908176kB,匿名 rss:66820kB,文件 rss:0kB
[134458.272131] end_request:I/O 错误,开发 xvda,扇区 627665
[134458.288710] end_request:I/O 错误,开发 xvda,扇区 627681
[134458.298582] end_request:I/O 错误,开发 xvda,扇区 5577385
[134458.301842] end_request:I/O 错误,开发 xvda,扇区 5577401
[134458.302578] end_request:I/O 错误,开发 xvda,扇区 5577425
[134458.302578] end_request:I/O 错误,开发 xvda,扇区 5544705
[134458.302578] end_request:I/O 错误,开发 xvda,扇区 1890769
[134458.302578] end_request:I/O 错误,开发 xvda,扇区 1889537
[134458.302578] end_request:I/O 错误,开发 xvda,扇区 1889601
[134458.302578] end_request:I/O 错误,开发 xvda,扇区 1889657

这是 PHP 代码

<?php

$cf = dirname(__FILE__);
if ($cf) chdir($cf);

include_once('/var/www/html/clubberi.com/includes/incl.php');
$conn = ConnectToDatabese();
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

include_once('/var/www/html/clubberi.com/adm/cklog.php');

include_once('/var/www/html/clubberi.com/cls/trights.php');
global $rights;
$rights = new TRights();
$rights->conn = $conn;
$rights->Init();

$update_gallery="INSERT INTO GALLERY (NAZ,SCIMG,SCHEDULE,IUSER) VALUES ";

$sql="SELECT ID,NAZ,INSTA_LINK FROM PLACE WHERE INSTA_LINK<>'' AND GENRE=416";
$rs=$conn->Execute($sql) or die("Ошибка выполнения $sql");

set_time_limit(240);
    $i=0;
$link = "";
while(!$rs->EOF)
{
    $SCHEDULE = GetFieldFromSQL($conn,"SELECT ID FROM SCHEDULE WHERE DATE(ACTIONTIME)=CURDATE() AND PLACE=".$rs->fields['ID'] ,0);
    if(!$SCHEDULE){
        $MAX_SC_ID = GetFieldFromSQL($conn,"SELECT MAX(ID) FROM SCHEDULE" ,0);
        $curid = $MAX_SC_ID+1;
        $nos = NewObject($conn,'TSchedule',$curid);
        $nos->sf('NAZ','Some party - '.date('d.m.Y'));
        $nos->sf('PLACE',$rs->fields['ID']);
        $nos->sf('ACTIONTIME',date('d.m.Y'));
        $s = $nos->BaseInsert();
        $SCHEDULE = $nos->id;
    }
    $jsonurl = "https://api.instagram.com/v1/locations/".$rs->fields['INSTA_LINK']."/media/recent?client_id=421b46699e074734932d59771fcd1daf";
        #echo $jsonurl;
        $newUrl = htmlspecialchars_decode($jsonurl);
        $json = file_get_contents($newUrl, 0, null, null);
        #print_r("<br>".strlen($json));
        $json_output = json_decode($json, true);

    while(isset($json_output['data'][$i]['images']['standard_resolution']))
    {
            $CUR_IMG = GetFieldFromSQL($conn,"SELECT ID FROM GALLERY WHERE SCIMG=".sqlstr($json_output['data'][$i]['images']['standard_resolution']['url']) ,0);
            if(!$CUR_IMG)
            {
                $update_gallery.="('image-".$i."',".sqlstr(hsc($json_output['data'][$i]['images']['standard_resolution']['url'])).",".$SCHEDULE.",".sqlstr($json_output['data'][0]['caption']['from']['id'])."),";
                $i++;
            }
    }
    $rs->MoveNext();
}

if($i){
    $update_gallery = substr($update_gallery, 0, (strlen($update_gallery)-1));
    $rs=$conn->Execute($update_gallery) or die("Ошибка выполнения $update_gallery");
    echo $i."images";
}else echo "no image ";

?>

【问题讨论】:

  • 它在您的日志文件中清楚地显示Out of memory...尝试改进您的 sql 查询/PHP 代码..

标签: php mysql amazon-ec2


【解决方案1】:

是否有可能永远不会退出“standard_resolution”while 循环?如果$CUR_IMG 为TRUE,则$i 永远不会增加。所以它会一直停留在那个循环中……永远!

【讨论】:

  • 我认为你一针见血。内存不足的最常见原因是无限循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
相关资源
最近更新 更多