윈도우 서버를 ..
할 얘기가 서버 뿐이나요.
중요한 부분 ㅠ.
컨테이너 안에 넣었을 때 자세한 원인 분석이 안되는데요. 원격 디버깅처럼 작동하여서 안되는 것이 많은 듯 해요.
윈도우 기반 php빌드를 한 다음 페이지를 열었는데 비어있는 문제 하나랑 msquic.dll 메타데이터가 없다고 cs파일을 빌드하지 못하는 문제가 발견되었어요.
빌드가 잘못되었는지 확인하려고 cpp 샘플을 이케이케 고쳐서 해보았는데 잘 되어요.
> nightmare/TestCpp at main · nyakuz/nightmare · GitHub
이상이 없으면 서버 문제인데 버퍼를 비우지 않고 종료하는 것이라 파악하고 고쳤더니 잘 되어요.
nightmare/XPhpModule/XPhpScript.cs at main · nyakuz/nightmare · GitHub
CaseScript[context] = sapi;
var code = Execute(context, method, content_type, content_length, script_filename_index, script_filepath, query_string);
_= ((PageSapi)CaseScript[context]).SendFlushCallback().Result;
CaseScript.TryRemove(context, out var _);MainMiddleware.cs
public async override ValueTask<int> SendFlushCallback() {
await Ctx.Response.BodyWriter.FlushAsync(Ctx.RequestAborted);
return 0;
}
이 서버 .. 가상 환경을 사용하지 않고 본 윈도우에서 실행을 하게 될 줄은 몰랐쩌.
cpu99.99% 잡아내자고 긴 세월 동안 이 난리 이어요.
부수적인 문제를 찾았으니 소소한 성과에 만족하여야 하겠나요. 처음부터 하자가 없었으면 얼마나 더 좋았겠어요.
아 ..
부지런하게 기록을 남겨야 해요.
커밋 하려고 코드를 더 살펴보았는데 MainMiddleware 쪽에 등록해줄 수 도 있어요. 이 방법이 더 좋습니다.
nightmare/Nightmare/Main/MainMiddleware.cs at main · nyakuz/nightmare · GitHub
public async Task InvokeAsync(HttpContext context, MainRouter router, MimeTypeSingleton mimeType, ISecureService session) {
await _next(context);
var res = context.Response;
if (res.Headers.ContentType.Count == 0 && res.StatusCode == 404 && res.HasStarted == false) {
res.StatusCode = 200;
var sapi = new PageSapiContext(context, mimeType, session);
await router.InvokePage(sapi);
await res.BodyWriter.FlushAsync();
}
}