@optio HTTP SSH doesn't work here. I am saving files when the router is offline.
@Amm0 Adding a ":delay 1s" is already set up in my infinite loop that saves BLE advertisements every second.
But when there are already 1000 files saved, the
[/file find name=$fileName] starts to return after 3 seconds, then I delay 1s.
However, the iteration duration increases drastically... I need an iteration every second, even with more than 1000 files.
@rextended For me, it's kind of normal to check if a filename already exists before creating a file.
Because the command
file/add name=$filename contents=$content can throw the exception "File already exists" and end the process.
So, your workaround might work initially, but if for any reason the file already exists (unplug, hard reboot, reset file last index, your file isn't updated with the last index, etc.), then we could face a "File already exists" error and the process would end.
I can give you an example where
[/file find name=$fileName] is using 100% CPU usage
But please take in consideration that in my case my loop is better elaborated, and files that I saved usually do not already exist.
To see the real issue please create 1000 files inside the router,
################################## Functions ##################################
:global getFileName do={
:local prefix "test/toto"
:local counter $1
:local name ($prefix . $counter . ".json")
:put ($name)
:return $name
}
:global EpochTime do={
:local ds [/system clock get date];
:local months;
:if ((([:pick $ds 9 11]-1)/4) != (([:pick $ds 9 11])/4)) do={
:set months {"an"=0;"eb"=31;"ar"=60;"pr"=91;"ay"=121;"un"=152;"ul"=182;"ug"=213;"ep"=244;"ct"=274;"ov"=305;"ec"=335};
} else={
:set months {"an"=0;"eb"=31;"ar"=59;"pr"=90;"ay"=120;"un"=151;"ul"=181;"ug"=212;"ep"=243;"ct"=273;"ov"=304;"dec"=334};
}
:set ds (([:pick $ds 9 11]*365)+(([:pick $ds 9 11]-1)/4)+($months->[:pick $ds 1 3])+[:pick $ds 4 6]);
:local ts [/system clock get time];
:set ts (([:pick $ts 0 2]*60*60)+([:pick $ts 3 5]*60)+[:pick $ts 6 8]);
:return ($ds*24*60*60 + $ts + 946684800 - [/system clock get gmt-offset]);
}
############################### Bluetooth Loop ################################
:put ("[*] Gathering Bluetooth info...")
:local counter 0
:local content "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sed odio enim. Suspendisse pellentesque urna id sem lobortis, id vestibulum magna faucibus. Aenean eleifend risus sed est commodo, dignissim feugiat mauris mattis. Mauris auctor finibus ipsum eget eleifend. Aenean eget est nec nisl suscipit sagittis at nec purus. In quis nisi enim. Etiam sed arcu fringilla est dignissim porta non non enim. In interdum ultricies tortor vitae efficitur. Pellentesque accumsan bibendum suscipit. Vivamus nec aliquam lacus. Suspendisse vitae risus rhoncus, dignissim mauris non, cursus eros.
Etiam a ipsum purus. Mauris justo massa, hendrerit ut ipsum quis, eleifend cursus urna. Mauris facilisis turpis urna, at mattis velit sollicitudin at. Vivamus tincidunt, nulla non tincidunt condimentum, massa orci bibendum tellus, at convallis nisi sem ut arcu. Nullam eu imperdiet odio. Suspendisse dignissim mollis nibh, in laoreet sapien pretium a. Donec lacus nisi, ultricies ut leo eu, gravida scelerisque eros. Vestibulum sit amet ultricies justo, eu facilisis diam. Donec luctus diam ac neque consequat, nec tincidunt nisl lobortis. Praesent imperdiet consequat leo, a convallis ligula tempus ac.
Vestibulum elit lorem, vehicula id dolor ut, mollis lacinia tortor. Nullam congue magna fringilla turpis interdum, et maximus dolor hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque consectetur ultrices tellus, eu feugiat sapien tempor eu. In eleifend maximus leo. Aliquam erat volutpat. Pellentesque ultricies facilisis congue. Donec et tellus tincidunt, pulvinar purus eget, imperdiet magna. In eget sem eros. Suspendisse commodo sollicitudin rutrum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse quis tortor non nulla vehicula mattis. Nulla luctus congue nisi, vel ultricies ex pulvinar in. Aenean sit amet risus pellentesque, dapibus elit quis, lobortis nisi. Nam molestie, turpis non fermentum congue, nibh erat finibus est, nec vestibulum dolor orci et magna. Aenean eu odio non diam dictum posuere eget vitae justo.
Mauris venenatis at quam eget ultricies. Pellentesque sodales neque dolor, in rutrum metus volutpat in. Aenean luctus diam id tortor hendrerit iaculis. Pellentesque mattis nulla id nisl tincidunt, in vehicula eros gravida. Duis vestibulum bibendum leo ut dictum. Duis quis sem at urna hendrerit posuere. Suspendisse id erat eu tortor placerat ullamcorper. Integer gravida justo sit amet condimentum iaculis.
Vestibulum ornare, ante ac posuere suscipit, risus massa tempor erat, eu venenatis mi lectus ac erat. Pellentesque quis erat efficitur, rutrum purus in, sollicitudin justo. Vivamus vitae urna ante. Donec maximus arcu vitae augue vestibulum interdum. Sed congue ullamcorper tellus, ac pretium metus porta finibus. Cras ultricies ligula libero, eget dapibus risus rutrum in. Morbi maximus lobortis purus a pharetra. Nulla et luctus orci, ac euismod elit. Nunc fermentum ligula sed purus suscipit, quis consectetur enim sodales. Etiam eu gravida ipsum. Cras posuere tortor ac orci sagittis dapibus. Proin quis tristique quam.
Nunc id mi in tortor pulvinar mollis a quis lacus. Pellentesque blandit aliquam purus at vestibulum. Praesent facilisis nisl quis risus laoreet, vel varius diam suscipit. Ut ullamcorper elit eget ornare sollicitudin. Praesent in sagittis ex. Morbi eget quam hendrerit, accumsan sapien interdum, vehicula lectus. Nam nunc mi, pulvinar eu tincidunt et, eleifend sit amet nunc. Proin quis ex vitae nisi sodales commodo. Nulla facilisi. Donec sit amet risus et leo efficitur tristique non id lacus. Donec iaculis commodo lorem, eu laoreet dolor faucibus eget. Vestibulum ligula metus, malesuada quis justo in, molestie ultricies dui. Nulla ultricies tellus et enim condimentum iaculis. Sed imperdiet nibh sed orci facilisis, et vestibulum diam molestie. Sed turpis arcu, lobortis ac consectetur sed, dapibus quis massa.
"
:while (true) do={
:local fileName [$getFileName $counter]
:local startTime [$EpochTime]
if ([/file find name=$fileName] = "") do={
:local endTime [$EpochTime]
# Calculating the difference between the start and end time
:local execTime ($endTime - $startTime)
:put ("[*] Time taken for file check: $execTime seconds")
:put ("[*] $fileName file size: $[:len $content] bytes")
/file add name=$fileName contents=$content
}
:set counter ($counter + 1)
}
test/toto1001.json
[*] Time taken for file check: 1 seconds
[...]
test/toto2001.json
[*] Time taken for file check: 3 seconds
[...]
test/toto3001.json
[*] Time taken for file check: 5 seconds
[...]
test/toto4001.json
[*] Time taken for file check: 7 seconds
[...]
test/toto5001.json
[*] Time taken for file check: 9 seconds