0
理想情況下,我想這樣做:請求處理後,VCL是否可以調用模塊函數?
sub vcl_after_response_is_sent {
mymod.f(req, resp);
}
但我看不出有任何builtin subroutine,可以讓你做到這一點。有沒有其他方式可以完成?
理想情況下,我想這樣做:請求處理後,VCL是否可以調用模塊函數?
sub vcl_after_response_is_sent {
mymod.f(req, resp);
}
但我看不出有任何builtin subroutine,可以讓你做到這一點。有沒有其他方式可以完成?
這可以使用PRIV_TASK自由功能完成。
在模塊的VCC聲明功能如下:
$Function VOID f(PRIV_TASK)
使用類似的函數的定義如下:
void finish_request(void*) {
}
VCL_VOID vmod_trace_request(VRT_CTX, struct vmod_priv* priv_task) {
priv_task->priv = /* Some non-null value */
priv_task->free = finish_request;
}
如果f
然後從vcl_recv
sub vcl_recv {
mymod.f();
}
稱爲
finish_request
將當清漆完成請求時調用。
爲什麼[vcl_fini](https://varnish-cache.org/docs/trunk/users-guide/vcl-built-in-subs.html#vcl-fini)無法啓動該任務? –
是不是隻有在處理完所有請求後才被調用?我希望爲每個請求調用一些東西,在處理完後不久。 – rnickb