안녕하세요. 선배님들 인사드립니다 꾸벅.
정답을 찾지 못해도, 방향이라도 조언을 얻고자 감히 질문 올려봅니다.
C#을 이용해서 로그를 수집하는 프로그램을 만들고 있는데,
이 로그를 스트링화 해서 서버쪽에 PHP로 날리면
PHP에서 db 로 보내는 방식으로 사용하고 있습니다.
몇주전부터 전체 로그를 보내는 방식으로 만들어보고 있는데
이 로그의 길이가 짧으면 2-3천글자 길면 몇만글자가 되어서
longtext 컬럼을 이용하고 있습니다.
2~5천글자 정도는 아무 문제없이 잘 전송이 되는데
8천? 9천? 정도가 넘어가면 전송 자체가 안됩니다.
(글씨가 잘리는게 아니고 전송자체가 안됨)
그래서 해당 컬럼에 직접 붙혀넣기로 몇만글자를 넣어도 잘 들어가서
이건 프로그램이나 PHP의 문제가 아닐가 싶은 의심만 드는 상황입니다.
“제가 많이 초보입니다ㅠ_ㅠ”
C#에서는 이런식으로 전송을 날립니다.
try
{
StringBuilder sb = new StringBuilder(url);
sb.Append(“?” + “예를들어이렇게시작” + “=” + 머시기머시기);
sb.Append(“&” + “temp” + “=” + mainForm.txtResult); <— 이부분이 문제의 그 부분입니다.
WebRequest myWebRequest = WebRequest.Create(sb.ToString());
WebResponse myWebResponse = myWebRequest.GetResponse();
StreamReader reader = new StreamReader(myWebResponse.GetResponseStream());
string temp = reader.ReadToEnd();
int ret = -1;
try
{
ret = Int32.Parse(temp);
}
catch { }
return ret;
}
catch (Exception ee)
{
ee.ToString();
return -1;
}
mainForm.txtResult
이부분은 다른 부분에서
txtResult = sb1.ToString();
이런식으로 처리해서 가져옵니다.
줄은 대략 적어도 500줄 많으면 3천줄 정도 되기도 하구요.
줄당 적어도 30글자 많으면 50글자정도 됩니다.
형식은
[23-08-17 13:24:35] 글씨와 숫자로 12,236으로 이루어져 있습니다.
같은 줄이 많습니다.
C#에서 이걸 보내는 PHP쪽은
<?php include "common.php"; @extract($_REQUEST); $ip = $_SERVER['REMOTE_ADDR']; $sql = "insert into a_record set temp='$temp', <-----이부분이 받는쪽입니다. username='$username', insip='$ip' "; $ret = dbquery($sql); if($ret) echo "1"; else echo "-1"; ?>보내려는 스트링의 내용이 많으면 안올라가고
적으면 잘 올라가고요.
제가 어느부분을 좀더 관심있게 찾아봐야 할지
고견 부탁드립니다!! 꾸벅
===================================
고견을 통해 수정한 내용 공유하고자 들렀습니다!!
sb.Append(“?” + “예를들어이렇게시작” + “=” + 머시기머시기);
sb.Append(“&” + “temp” + “=” + mainForm.txtResult); <— 이부분이 문제의 그 부분입니다.
WebRequest myWebRequest = WebRequest.Create(sb.ToString());
WebResponse myWebResponse = myWebRequest.GetResponse();
StreamReader reader = new StreamReader(myWebResponse.GetResponseStream());
이부분을 아래처럼 수정했습니다.
sb.Append(“?”);
sb.Append(“&” + “예를들어이렇게시작” + “=” + 머시기머시기);
sb.Append(“&” + “temp” + “=” + mainForm.txtResult);
byte[] byteArray = Encoding.UTF8.GetBytes(string.Concat(sb.ToString())); <— 추가
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(url); <— url로 변경
myWebRequest.Method = “POST”; <— 추가
myWebRequest.ContentType = “application/x-www-form-urlencoded; charset=UTF-8;”; <— 추가
myWebRequest.ContentLength = byteArray.Length; <— 추가
Stream dataStream = myWebRequest.GetRequestStream(); <— 추가
dataStream.Write(byteArray, 0, byteArray.Length); <— 추가
dataStream.Close(); <— 추가
WebResponse myWebResponse = myWebRequest.GetResponse();
StreamReader reader = new StreamReader(myWebResponse.GetResponseStream());
sb.Append(“?”); 이부분으로 시작하는건 등록이 안되더라구요.
임시방편으로 이렇게 한줄 추가하고 다음부터 &로 시작하는건 등록이 잘되구요.
php쪽이나 다른 부분은 아예 안건드렸습니다.
일단…!!!
작동이 잘 된다는 점에서 매우 만족…
전문가분들이 보기엔 거슬리시는 부분이 분명 있겠지만!!
문제에 봉착한다면 다시 찾아뵙겠습니다.
정말 진심으로 무척 감사드립니다!!