PageRenderTime 25ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/tgsf_core/libraries/tgsfMemory.php

http://tgsf.googlecode.com/
PHP | 348 lines | 318 code | 16 blank | 14 comment | 6 complexity | 1b3a47febdd7679770f4a9be257f46a3 MD5 | raw file
Possible License(s): GPL-2.0, GPL-3.0, BSD-3-Clause, MIT
  1. <?php defined( 'BASEPATH' ) or die( 'Restricted' );
  2. /*
  3. This code is Copyright (C) by TMLA INC. ALL RIGHTS RESERVED.
  4. Please view license.txt in /tgsf_core/legal/license.txt or
  5. http://tgWebSolutions.com/opensource/tgsf/license.txt
  6. for complete licensing information.
  7. */
  8. //------------------------------------------------------------------------
  9. /**
  10. * This simple array tracks created tgsfBase objects. It does not reference the objects but rather
  11. * tracks by name how many of a given object are still in memory. This way leaks can be detected
  12. *
  13. */
  14. class tgsfMemory
  15. {
  16. private static $enableTracking = false;
  17. private static $instances = array();
  18. private static $instances2 = array();
  19. static function echoLog()
  20. {
  21. echo "\r\n\r\nObjects in Memory:\r\n";
  22. foreach( self::$instances as $name => $count )
  23. {
  24. //if ( $count )
  25. {
  26. if ( array_key_exists( $name, self::$instances2) )
  27. {
  28. if ( $count != self::$instances2[$name] )
  29. {
  30. echo "changed";
  31. }
  32. else
  33. {
  34. echo "same ";
  35. }
  36. }
  37. else
  38. {
  39. echo "new ";
  40. }
  41. echo " " . $count ." " . $name . "\r\n";
  42. }
  43. }
  44. self::$instances2 = self::$instances;
  45. }
  46. static function newInstance( $class )
  47. {
  48. $className = get_class($class);
  49. if ( array_key_exists( $className, self::$instances) )
  50. {
  51. self::$instances[$className] = self::$instances[$className] + 1;
  52. }
  53. else
  54. {
  55. self::$instances[$className] = 1;
  56. }
  57. }
  58. static function removeInstance( $class )
  59. {
  60. $className = get_class($class);
  61. if ( array_key_exists( $className, self::$instances) )
  62. {
  63. self::$instances[$className] = self::$instances[$className] - 1;
  64. }
  65. else
  66. {
  67. // echo 'destruct ' . $className . ' not counted in __construct' . "\r\n";
  68. }
  69. }
  70. static function echoUnchecked()
  71. {
  72. $classes[] = 'logNoteModel';
  73. $classes[] = 'logModel';
  74. $classes[] = 'tgsfDbRegistry';
  75. $classes[] = 'wizardScheduleStartDateForm';
  76. $classes[] = 'ACHDirectFileProcessing';
  77. $classes[] = 'ACHDirectFiles';
  78. $classes[] = 'ManualTxnReportForm';
  79. $classes[] = 'wizardScheduleFrequencyForm';
  80. $classes[] = 'achAddendaRecord';
  81. $classes[] = 'achBatchControlRecord';
  82. $classes[] = 'achBatchHeaderRecord';
  83. $classes[] = 'achDetailRecord';
  84. $classes[] = 'achFileControlRecord';
  85. $classes[] = 'achFileHeaderRecord';
  86. $classes[] = 'achRecordBuilder';
  87. $classes[] = 'arbItemPadLeft';
  88. $classes[] = 'arbItemPadRight';
  89. $classes[] = 'tgsfGridGroupFooterCell';
  90. $classes[] = 'simpleMemberSearchForm';
  91. $classes[] = 'txn_log_chargeback_completed_reporttgsfReport';
  92. $classes[] = 'withdrawForm';
  93. $classes[] = 'wizardExternalAccountForm';
  94. $classes[] = 'accountStatementSearchForm';
  95. $classes[] = 'achRecordFactory';
  96. $classes[] = 'admin_bankAccountsGrid';
  97. $classes[] = 'arbItemFactory';
  98. $classes[] = 'depositForm';
  99. $classes[] = 'tvr_alpha';
  100. $classes[] = 'tvr_alpha_numeric';
  101. $classes[] = 'tvr_alphanum_extended';
  102. $classes[] = 'tvr_bank_routing';
  103. $classes[] = 'tvr_clean';
  104. $classes[] = 'tvr_clean_address';
  105. $classes[] = 'tvr_clean_question';
  106. $classes[] = 'tvr_credit_card';
  107. $classes[] = 'tvr_custom';
  108. $classes[] = 'tvr_date';
  109. $classes[] = 'tvr_db_exists';
  110. $classes[] = 'tvr_db_unique';
  111. $classes[] = 'tvr_email';
  112. $classes[] = 'tvr_future_date';
  113. $classes[] = 'tvr_gt';
  114. $classes[] = 'tvr_gte';
  115. $classes[] = 'tvr_int';
  116. $classes[] = 'tvr_lt';
  117. $classes[] = 'tvr_lte';
  118. $classes[] = 'tvr_lte_float';
  119. $classes[] = 'tvr_match_field';
  120. $classes[] = 'tvr_match_value';
  121. $classes[] = 'tvr_max_len';
  122. $classes[] = 'tvr_min_len';
  123. $classes[] = 'tvr_neq';
  124. $classes[] = 'tvr_not_match_field';
  125. $classes[] = 'tvr_numeric';
  126. $classes[] = 'tvr_required';
  127. $classes[] = 'tvr_usa_canada_state';
  128. $classes[] = 'tvr_usa_phone';
  129. $classes[] = 'tvr_usa_state';
  130. $classes[] = 'tvr_usa_zipcode';
  131. $classes[] = 'wizardScheduleAmountForm';
  132. $classes[] = 'mmFormTop';
  133. $classes[] = 'tgsfValidateField';
  134. $classes[] = 'accountHistorySearchForm';
  135. $classes[] = 'allRecordsSignup';
  136. $classes[] = 'loginMailForm';
  137. $classes[] = 'loginMailForm_Phone';
  138. $classes[] = 'memberAffiliatePercent';
  139. $classes[] = 'externalAccountEditForm';
  140. $classes[] = 'fixedLengthFieldParser';
  141. $classes[] = 'loginMailForm_Phone';
  142. $classes[] = 'productExchangeCostGrid';
  143. $classes[] = 'tgsfParseFilterInt';
  144. $classes[] = 'tgsfParseFilterTrim';
  145. $classes[] = 'unconfirmed_bankaccounts_report';
  146. $classes[] = 'externalAccountForm';
  147. $classes[] = 'fixedLengthFieldDefinition';
  148. $classes[] = 'storedReportNamesGrid';
  149. $classes[] = 'tgsfParseFilterFactory';
  150. $classes[] = 'tgsfPluginLoader';
  151. $classes[] = 'tgsfSearchEngineDetect';
  152. $classes[] = 'memberSuspendForm';
  153. $classes[] = 'staticPage';
  154. $classes[] = 'tgsfValidate';
  155. $classes[] = 'OutputFormatterCLI';
  156. $classes[] = 'memberSearchForm';
  157. $classes[] = 'processSellListForm';
  158. $classes[] = 'sellListGrid';
  159. $classes[] = 'setPasswordForm';
  160. $classes[] = 'tgsfPaginateQuery';
  161. $classes[] = 'userSecurityQuestionForm';
  162. $classes[] = 'OutputColumn';
  163. $classes[] = 'achFileBuilderModel';
  164. $classes[] = 'mmAffiliatePlugin';
  165. $classes[] = 'tgsfBreadcrumb';
  166. $classes[] = 'tgsfBreadcrumbItem';
  167. $classes[] = 'tgsfLog';
  168. $classes[] = 'bankAccountsGrid';
  169. $classes[] = 'companyAccountsGrid';
  170. $classes[] = 'dateSearchForm';
  171. $classes[] = 'externalAccountForm';
  172. $classes[] = 'formTop';
  173. $classes[] = 'tgsfGridGroup';
  174. $classes[] = 'TxnManual';
  175. $classes[] = 'accountSummaryGrid';
  176. $classes[] = 'adjustmentForm';
  177. $classes[] = 'changeUsernameForm';
  178. $classes[] = 'marketResultsGrid';
  179. $classes[] = 'tgsfAction';
  180. $classes[] = 'tgsfFilter';
  181. $classes[] = 'tgsfHandler';
  182. $classes[] = 'txnManualForm';
  183. $classes[] = 'txn_log_chargeback_report';
  184. $classes[] = 'upcoming_schedules_report';
  185. $classes[] = 'userChangePasswordForm';
  186. $classes[] = 'xbatchReportForm';
  187. $classes[] = 'xbatch_records_grid';
  188. $classes[] = 'account_statementReport';
  189. $classes[] = 'achFileTest';
  190. $classes[] = 'dateSearchForm';
  191. $classes[] = 'marketPricePublicGrid';
  192. $classes[] = 'parserFactory';
  193. $classes[] = 'pendingSellTxnsGrid';
  194. $classes[] = 'specialDateForm';
  195. $classes[] = 'specialDateGrid';
  196. $classes[] = 'storedReportGrid';
  197. $classes[] = 'tgsfEvent';
  198. $classes[] = 'tgsfEventFactory';
  199. $classes[] = 'tgsfFormField';
  200. $classes[] = 'tgsfHtmlTag';
  201. $classes[] = 'tgsfPlugin';
  202. $classes[] = 'txnSellListForm';
  203. $classes[] = 'wizardLoginForm';
  204. $classes[] = 'ACHDirect';
  205. $classes[] = 'ACHInterfaceTest';
  206. $classes[] = 'ACHMessage';
  207. $classes[] = 'ACHResponse';
  208. $classes[] = 'ACHTransaction';
  209. $classes[] = 'accountTypeForm';
  210. $classes[] = 'accountTypeGrid';
  211. $classes[] = 'entityToAccountModel';
  212. $classes[] = 'externalAccountModel';
  213. $classes[] = 'marketPriceForm';
  214. $classes[] = 'marketPriceGrid';
  215. $classes[] = 'sellCurrencyForm';
  216. $classes[] = 'tgsfGridCol';
  217. $classes[] = 'tgsfGridRowHeader';
  218. $classes[] = 'txn_log_rejected_report';
  219. $classes[] = 'changeUsernameForm';
  220. $classes[] = 'companyTxnGrid';
  221. $classes[] = 'dbDataSource';
  222. $classes[] = 'demoSetup';
  223. $classes[] = 'sellForm';
  224. $classes[] = 'staticPageModel';
  225. $classes[] = 'tgsfDataSource';
  226. $classes[] = 'txnSearch';
  227. $classes[] = 'achTxnLogModel';
  228. $classes[] = 'dsFactory';
  229. $classes[] = 'foreignKey';
  230. $classes[] = 'loginMailGrid';
  231. $classes[] = 'rteForm';
  232. $classes[] = 'tgsfUserAuthCLI';
  233. $classes[] = 'ACHResultsForm';
  234. $classes[] = 'activateForm';
  235. $classes[] = 'dbManager';
  236. $classes[] = 'newShipmentReport';
  237. $classes[] = 'tgsfUserAuth';
  238. $classes[] = 'txnReport';
  239. $classes[] = 'ACHInterface';
  240. $classes[] = 'achBatchModel';
  241. $classes[] = 'achFileModel';
  242. $classes[] = 'loginSearch';
  243. $classes[] = 'newSignupReport';
  244. $classes[] = 'queryJoin';
  245. $classes[] = 'shipmentsGrid';
  246. $classes[] = 'specialDateModel';
  247. $classes[] = 'statementGrid';
  248. $classes[] = 'storageFeeReport';
  249. $classes[] = 'storedReportModel';
  250. $classes[] = 'tgsfSession';
  251. $classes[] = 'url_marketing_model';
  252. $classes[] = 'accountTypeModel';
  253. $classes[] = 'achTxnModel';
  254. $classes[] = 'dbIndex';
  255. $classes[] = 'dbIndexCol';
  256. $classes[] = 'marketPriceModel';
  257. $classes[] = 'member_dump_report';
  258. $classes[] = 'microdepositModel';
  259. $classes[] = 'productForm';
  260. $classes[] = 'productGrid';
  261. $classes[] = 'scheduleForm';
  262. $classes[] = 'scheduleGrid';
  263. $classes[] = 'tgsfFormat';
  264. $classes[] = 'tgsfIDD';
  265. $classes[] = 'tgsfMemory';
  266. $classes[] = 'timezoneForm';
  267. $classes[] = 'ACHTestForm';
  268. $classes[] = 'SilverTxnReport';
  269. $classes[] = 'accountsGrid';
  270. $classes[] = 'appException';
  271. $classes[] = 'dbSetup';
  272. $classes[] = 'login_batchModel';
  273. $classes[] = 'passwordReset2';
  274. $classes[] = 'productGrid';
  275. $classes[] = 'tgsfCrypt';
  276. $classes[] = 'tgsfDbException';
  277. $classes[] = 'tgsfException';
  278. $classes[] = 'tgsfFormException';
  279. $classes[] = 'tgsfGridException';
  280. $classes[] = 'tgsfHtmlException';
  281. $classes[] = 'tgsfValidationException';
  282. $classes[] = 'userAccountForm';
  283. $classes[] = 'DailyNetReport';
  284. $classes[] = 'entityForm';
  285. $classes[] = 'entityGrid';
  286. $classes[] = 'loginMail';
  287. $classes[] = 'passwordResetForm';
  288. $classes[] = 'query';
  289. $classes[] = 'queryParam';
  290. $classes[] = 'signupForm';
  291. $classes[] = 'table';
  292. $classes[] = 'tgsfCLIOutput';
  293. $classes[] = 'tgsfHTMLOutput';
  294. $classes[] = 'tgsfPost';
  295. $classes[] = 'tgsfSFTP';
  296. $classes[] = 'tgsfTest';
  297. $classes[] = 'date';
  298. $classes[] = 'field';
  299. $classes[] = 'logSeverityForm';
  300. $classes[] = 'loginForm';
  301. $classes[] = 'model';
  302. $classes[] = 'tgsfCli';
  303. $classes[] = 'tgsfGet';
  304. $classes[] = 'tgsfUrl';
  305. $classes[] = 'txn_batch_model';
  306. $classes[] = 'currencyModel';
  307. $classes[] = 'scheduleModel';
  308. $classes[] = 'sellForm';
  309. $classes[] = 'accountModel';
  310. $classes[] = 'achTxnModel';
  311. $classes[] = 'productModel';
  312. $classes[] = 'txnGrid';
  313. $classes[] = 'txn_logModel';
  314. $classes[] = 'entityModel';
  315. $classes[] = 'xbatch_model';
  316. $classes[] = 'batchModel';
  317. $classes[] = 'logNoteForm';
  318. $classes[] = 'loginModel';
  319. $classes[] = 'shipModel';
  320. $classes[] = 'txnModel';
  321. $classes[] = 'tzModel';
  322. $classes[] = 'exampleGrid';
  323. $classes[] = 'logListGrid';
  324. foreach ( $classes as $class )
  325. {
  326. if ( array_key_exists( $class, self::$instances) === false )
  327. {
  328. echo $class . " never instantiated" . PHP_EOL;
  329. }
  330. }
  331. }
  332. };