Esta secci¨®n proporciona detalles del preprocesamiento mediante JavaScript.
El preprocesamiento de JavaScript se realiza invocando la ´Ú³Ü²Ô³¦¾±¨®²Ô de JavaScript con un 'valor' de par¨¢metro ¨²nico y cuerpo de ´Ú³Ü²Ô³¦¾±¨®²Ô proporcionado por el usuario. El El resultado del paso de preprocesamiento es el valor devuelto por esta ´Ú³Ü²Ô³¦¾±¨®²Ô, por ejemplo. Por ejemplo, para realizar la conversi¨®n de Fahrenheit a Celsius, ingrese:
en los par¨¢metros de preprocesamiento de JavaScript, que se incluir¨¢n en un Funci¨®n JavaScript por servidor:
El par¨¢metro de entrada 'valor' siempre se pasa como una cadena. El regreso El valor se convierte autom¨¢ticamente en cadena mediante el m¨¦todo ToString() (si falla, entonces el error se devuelve como valor de cadena), con algunos excepciones:
Los errores se pueden devolver arrojando valores/objetos (normalmente ya sea cadenas u objetos de error).
Por ejemplo:
Cada script tiene un tiempo de espera de ejecuci¨®n de 10 segundos (dependiendo del script, el tiempo de espera puede tardar m¨¢s en activarse); super¨¢ndolo ser¨¢ error de devoluci¨®n. Se aplica un l¨ªmite de almacenamiento din¨¢mico de 512 megabytes.
El c¨®digo de bytes del paso de preprocesamiento de JavaScript se almacena en cach¨¦ y se reutiliza cuando El paso se aplica la pr¨®xima vez. Cualquier cambio en los pasos de preprocesamiento del art¨ªculo. har¨¢ que el script almacenado en cach¨¦ se restablezca y se vuelva a compilar m¨¢s tarde.
Fallas consecutivas en el tiempo de ejecuci¨®n (3 seguidas) causar¨¢n que el motor se apague. reiniciado para mitigar la posibilidad de que un script rompa el entorno de ejecuci¨®n para los siguientes scripts (esta acci¨®n se registra con Nivel de depuraci¨®n 4 y superior).
El preprocesamiento de JavaScript se implementa con el motor JavaScript .
Ver tambi¨¦n: Objetos JavaScript adicionales y globales funciones
Es posible utilizar macros de usuario en el c¨®digo JavaScript. Si un gui¨®n contiene macros de usuario, estas macros son resueltas por el servidor/proxy antes de ejecutar los pasos de preprocesamiento espec¨ªficos. Tenga en cuenta que al realizar pruebas de pasos de preprocesamiento en la interfaz, los valores macro no se extraer¨¢n y deben ingresarse manualmente.
El contexto se ignora cuando una macro se reemplaza con su valor. El valor de la macro se inserta en el c¨®digo tal cual, no es posible agregar escapes adicionales antes de colocar el valor en el c¨®digo JavaScript. Tenga en cuenta que esto puede provocar errores de JavaScript en algunos casos.
En el siguiente ejemplo, si el valor recibido excede el valor de una macro {$THRESHOLD}, en su lugar se devolver¨¢ el valor del umbral (si est¨¢ presente):
var threshold = '{$THRESHOLD}';
return (!isNaN(threshold) && value > threshold) ? threshold : value;
Los siguientes ejemplos ilustran c¨®mo puede utilizar el preprocesamiento de JavaScript.
Cada ejemplo contiene una breve descripci¨®n, un cuerpo de ´Ú³Ü²Ô³¦¾±¨®²Ô para los par¨¢metros de preprocesamiento de JavaScript y el resultado del paso de preprocesamiento: valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô.
Convierte el n¨²mero "2.62128e+07" de notaci¨®n cient¨ªfica a un n¨²mero entero.
Valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô: 26212800.
Convierta el n¨²mero binario "11010010" a un n¨²mero decimal.
Valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô: 210.
Redondea el n¨²mero "18.2345" a 2 d¨ªgitos.
Valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô: 18.23.
Cuente el n¨²mero de letras en la cadena "Áú»¢¶Ä²©".
Valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô: 6.
Obtenga el tiempo restante (en segundos) hasta la fecha de vencimiento de un certificado (12 de febrero a las 12:33:56 2022 GMT).
var dividir = valor.split(' '),
MONTHS_LIST = ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' ],
¨ª²Ô»å¾±³¦±ð³å³¾±ð²õ = ('0' + (LISTA_MESES.indexOf(split[0]) + 1)).slice(-2),
ISOdate = dividir[3] + '-' + ¨ª²Ô»å¾±³¦±ð³å³¾±ð²õ + '-' + dividir[1] + 'T' + dividir[2],
ahora = Fecha.ahora();
return parseInt((Date.parse(ISOdate) - ahora) / 1000);
Valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô: 44380233.
Modifique la estructura de datos JSON eliminando cualquier propiedad con la clave "data_size"
o "index_size"
.
var obj=JSON.parse(valor);
para (i = 0; i < Object.keys(obj).length; i++) {
eliminar obj[i]["data_size"];
eliminar obj[i]["index_size"];
}
devolver JSON.stringify (obj)
Valor aceptado por la ´Ú³Ü²Ô³¦¾±¨®²Ô:
[
{
"table_name": "historial",
"tama?o_datos": "326.05",
"index_size": "174,34"
},
{
"table_name": "history_log",
"tama?o_datos": "6.02",
"index_size": "3,45"
}
]
Valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô:
Convierta el valor recibido de un elemento del agente Áú»¢¶Ä²© web.page.get (por ejemplo, web.page.get[http://127.0.0.1 :80/server-status?auto]) a un objeto JSON.
// Convertir el estado de Apache a JSON
// Divide el valor en subcadenas y coloca estas subcadenas en una matriz
var ±ô¨ª²Ô±ð²¹²õ = valor.split('\n');
// Crea un objeto vac¨ªo "salida"
var salida = {};
// Crea un objeto "trabajadores" con propiedades predefinidas
var trabajadores = {
'_': 0, 'S': 0, 'R': 0, 'W': 0,
'K': 0, 'D': 0, 'C': 0, 'L': 0,
'G': 0, 'I': 0, '.': 0
};
// Agrega las subcadenas de la matriz "±ô¨ª²Ô±ð²¹²õ" al objeto "salida" como propiedades (pares clave-valor)
for (var i = 0; i < ±ô¨ª²Ô±ð²¹²õ.longitud; i++) {
var ±ô¨ª²Ô±ð²¹ = ±ô¨ª²Ô±ð²¹²õ[i].match(/([A-z0-9 ]+): (.*)/);
si (±ô¨ª²Ô±ð²¹! == nulo) {
salida[±ô¨ª²Ô±ð²¹[1]] = isNaN(±ô¨ª²Ô±ð²¹[2])? ±ô¨ª²Ô±ð²¹[2] : ±·¨²³¾±ð°ù´Ç(±ô¨ª²Ô±ð²¹[2]);
}
}
// ²Ñ¨¦³Ù°ù¾±³¦²¹s multiversi¨®n
salida.ServerUptimeSeconds = salida.ServerUptimeSeconds || salida.Tiempo de actividad;
salida.ServerVersion = salida.ServerVersion || salida.Servidor;
// Analiza la propiedad "Marcador" para obtener el recuento de trabajadores
if (tipo de salida.Scoreboard === 'cadena') {
for (var i = 0; i < salida.Scoreboard.length; i++) {
var char = salida.Scoreboard[i];
trabajadores[char]++;
}
}
// Agrega datos del trabajador al objeto "salida"
salida.Trabajadores = {
esperando: trabajadores['_'], comenzando: trabajadores['S'], leyendo: trabajadores['R'],
enviando: trabajadores['W'], keepalive: trabajadores['K'], dnslookup: trabajadores['D'],
cierre: trabajadores['C'], registro: trabajadores['L'], acabado: trabajadores['G'],
limpieza: trabajadores['I'], espacio: trabajadores['.']
};
// Devuelve cadena JSON
devolver JSON.stringify(salida);
Valor aceptado por la ´Ú³Ü²Ô³¦¾±¨®²Ô:
HTTP/1.1 200 correcto
Fecha: lunes 27 de marzo de 2023 11:08:39 GMT
Servidor: Apache/2.4.52 (Ubuntu)
Variar: aceptar-codificaci¨®n
Codificaci¨®n de contenido: gzip
Longitud del contenido: 405
Tipo de contenido: texto/sin formato; juego de caracteres=ISO-8859-1
127.0.0.1
Versi¨®n del servidor: Apache/2.4.52 (Ubuntu)
ServidorMPM: prefork
Servidor construido: 2023-03-08T17:32:01
Hora actual: lunes, 27 de marzo de 2023 14:08:39 EEST
Hora de reinicio: lunes 27 de marzo de 2023 12:19:59 EEST
ParentServerConfigGeneraci¨®n: 1
ParentServerMPMGeneraci¨®n: 0
Tiempo de actividad del servidor Segundos: 6520
Tiempo de actividad del servidor: 1 hora 48 minutos 40 segundos
Carga1: 0,56
Carga5: 0,33
Carga15: 0,28
Accesos totales: 2476
kBytes totales: 8370
Duraci¨®n total: 52718
Usuario de CPU: 8.16
CPUSistema: 3.44
CPUNi?osUsuario: 0
CPUNi?osSistema: 0
Carga de CPU: .177914
Tiempo de actividad: 6520
Solicitud por segundo: .379755
Bytes por segundo: 3461,58
Bytes por solicitud: 3461,58
Duraci¨®n por solicitud: 21,2916
Trabajadores ocupados: 2
Trabajadores inactivos: 6
Marcador: ____KW__................................................ ................................................. .................................................
Valor devuelto por la ´Ú³Ü²Ô³¦¾±¨®²Ô:
{
"Fecha": "lunes, 27 de marzo de 2023 11:08:39 GMT",
"Servidor": "Apache/2.4.52 (Ubuntu)",
"Variar": &±ç³Ü´Ç³Ù;´¡³¦±ð±è³Ù²¹°ù-°ä´Ç»å¾±´Ú¾±³¦²¹³¦¾±¨®²Ô&±ç³Ü´Ç³Ù;,
&±ç³Ü´Ç³Ù;°ä´Ç»å¾±´Ú¾±³¦²¹³¦¾±¨®²Ô&±ç³Ü´Ç³Ù;: "gzip",
"Longitud": 405,
"Tipo": "texto/sin formato; juego de caracteres=ISO-8859-1",
"ServerVersion": "Apache/2.4.52 (Ubuntu)",
"ServerMPM": "prefork",
"Servidor construido": "2023-03-08T17:32:01",
"CurrentTime": "Lunes, 27 de marzo de 2023 14:08:39 EEST",
"RestartTime": "Lunes, 27 de marzo de 2023 12:19:59 EEST",
"ParentServerConfigGeneration": 1,
&±ç³Ü´Ç³Ù;±Ê²¹°ù±ð²Ô³Ù³§±ð°ù±¹±ð°ù²Ñ±Ê²Ñ³Ò±ð²Ô±ð°ù²¹³¦¾±¨®²Ô&±ç³Ü´Ç³Ù;: 0,
"ServidorUptimeSeconds": 6520,
"ServerUptime": "1 hora 48 minutos 40 segundos",
"Carga1": 0,56,
"Carga5": 0,33,
"Carga15": 0,28,
¡°´¡³¦³¦±ð²õ´Ç²õ °Õ´Ç³Ù²¹±ô±ð²õ¡±: 2476,
"KBytes totales": 8370,
"Duraci¨®n total": 52718,
"CPUUser": 8.16,
"Sistema CPU": 3.44,
"CPUChildrenUser": 0,
"CPUChildrenSystem": 0,
"Carga de CPU": 0,177914,
"Tiempo de actividad": 6520,
"ReqPerSec": 0,379755,
"BytesPorSec": 1314,55,
"BytesPorReq": 3461,58,
&±ç³Ü´Ç³Ù;¶Ù³Ü°ù²¹³¦¾±¨®²Ô±Ê´Ç°ù¸é±ð±ç&±ç³Ü´Ç³Ù;: 21.2916,
"Trabajadores ocupados": 2,
"Trabajadores inactivos": 6,
"Marcador": "____KW__................................................ ................................................. ................................................",
"Trabajadores": {
"esperando": 6,
"empezando": 0,
"lectura": 0,
"enviando": 1,
"mantener vivo": 1,
"b¨²squeda dns": 0,
"cierre": 0,
"registro": 0,
"acabado": 0,
"limpieza": 0,
"ranura": 142
}
}