Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Интерпретация PHP в BAS
-
Подскажите, пожалуйста, как можно запустить PHP код в BAS, желательно, чтобы код PHP был прописан в программе, без внешних файлов. Удалось запустить через консоль, используя php.exe, но в этом способе есть недостатки:
- Как дождаться выполнения командной строки, чтобы перейти к обработке результатов
- Как получить сам результат? Делаю запись логов в файл, но метод так себе)
Буду благодарен за любую полезную информацию.
-
@миша нет ничего невозможного, я написал как можно запускать, но есть нюансы. возможно кто-то знает решение как работать проще. если вы не знаете, то смысл в вашем ответе про документацию. я читаю документацию и когда не нахожу ответа задаю вопрос, для этого и существует форум
-
@graf
https://community.bablosoft.com/topic/4559/как-добавить-новый-встроенный-язык/2а при работе через php.exe можно вывод в лог делать?


кстати вызов команд консоли через стандартный модуль работает через создание bat файла.
можно обращаться к api бас и работать без генерации -
@tet-vivi said in Интерпретация PHP в BAS:
а при работе через php.exe можно вывод в лог делать?
запускал через командную строку, в командной строке делал перевод лога в файл.
@tet-vivi said in Интерпретация PHP в BAS:
кстати вызов команд консоли через стандартный модуль работает через создание bat файла.
делал запуск консоли через node.js и после выполнения задачи процесс вроде как не завершается.
-
api bas для прямого вызова команд консоли
var loc_cmd = ""; native_async("processmanager", "start", JSON.stringify({location: loc_cmd, working_folder: "", waitfinish: true, arguments: "", version: 2}))! var result_str = ""; try{ var split = _result().split(",") result_str = base64_decode(split[0]) VAR_PROCESS_ERROR_OUTPUT = base64_decode(split[1]) }catch(e) { result_str = _result() }api/действие запустить Процесс вполне отвечает 2 пунктам в шапке темы.
есть опция ожидания выполнения команд, а так же получения результатов.можно модуль сделать для удобства.
-
@tet-vivi выглядит красиво, но пока что-то не удаётся добиться результата. в var loc_cmd указываю путь к папке, в которой находится исполняемый файл php.exe? верно? рабочую папку я так понял не обязательно указывать. а в аргументах ключи запуска php test.php?
-
@graf
var loc_cmd = "C:\php.exe test.php"- working_folder - рабочая папка(откуда команда будет вызываться)
например можно указать C:\ тогда можно не указывать путь к исполняемому файлу - waitfinish - ждать завершения
- arguments - аргументы консольный команды. например сюда можно вынести test.php
- location - консольная команда
код можно использовать через действие выполнить код
- working_folder - рабочая папка(откуда команда будет вызываться)
-
@graf said in Интерпретация PHP в BAS:
Подскажите, пожалуйста, как можно запустить PHP код в BAS, желательно, чтобы код PHP был прописан в программе, без внешних файлов. Удалось запустить через консоль, используя php.exe, но в этом способе есть недостатки:
- Как дождаться выполнения командной строки, чтобы перейти к обработке результатов
- Как получить сам результат? Делаю запись логов в файл, но метод так себе)
Буду благодарен за любую полезную информацию.
@support как то спросил, а какой код можно реализовать на php, который нельзя реализовать на node js?
Это я к тому, что зачем все эти телодвижения? Вы хотите в BAS использовать уже чей то готовый код на php? -
@Fox said in Интерпретация PHP в BAS:
@support как то спросил, а какой код можно реализовать на php, который нельзя реализовать на node js?
оффтоп
Да, хочу использовать библиотеку апи телеграм https://docs.madelineproto.xyz/
-
@graf said in Интерпретация PHP в BAS:
@Fox said in Интерпретация PHP в BAS:
@support как то спросил, а какой код можно реализовать на php, который нельзя реализовать на node js?
Звучит как начало какого-то фильма о мудреце))
Кстати да
:DДа, хочу использовать библиотеку апи телеграм https://docs.madelineproto.xyz/
Если таки нет аналога на ноде, то, как вариант, поднимите полноценный php сервер с этой либой, а данные передавайте в BAS через get-запросы\websocket\базу\файлы
-
@Fox said in Интерпретация PHP в BAS:
Если таки нет аналога на ноде, то, как вариант, поднимите полноценный php сервер с этой либой
мне нужно чтобы это было портативно, то есть пользователь скачал программу и без лишних настроек начал пользоваться. уже думал об этом варианте, вроде для таких целей должен подойти xampp?
-
@graf said in Интерпретация PHP в BAS:
xampp
Средний пользователь вспотеет от всех этих xampp :)) Лучше сделать свой сервер, хотя проще написать код самому без зависимостей.
-
@tet-vivi said in Интерпретация PHP в BAS:
@UserTrue xampp сложнее Open Server?
А разница? Обычный юзер одурет от всех шагов которые ему надо будет пройти, чтобы запустить это "чудо". При этом он на 99% что-то сделает неправильно и придется настраивать ему самому, вот для это и нужен свой сервер. Но тогда зачем тут бас... )))
-
@graf said in Интерпретация PHP в BAS:
Да, хочу использовать библиотеку апи телеграм
Под API телеграмм
https://core.telegram.org/bots/samples